本文主要是介绍C++ 44 之 指针运算符的重载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include <iostream>
#include <string>
using namespace std;class Students04{
public:int m_age;Students04(int age){this->m_age = age;}void showAge(){cout << "年龄是: " << this->m_age << endl;}~Students04(){cout << "析构" << endl;}
};// 利用智能指针管理new出来的students04对象的delete操作
class SmartPoint{
public:Students04* m_stu;SmartPoint(Students04* stu){this->m_stu = stu;}~SmartPoint(){if(this->m_stu){delete this->m_stu;this->m_stu = NULL;cout << "智能指针析构"<< endl;}}// 重载->Students04* operator->(){return this->m_stu;}// 重载*Students04& operator*(){return *(this->m_stu);}};int main()
{// 堆中申请空间// Students04* stu1 = new Students04(18); // 显示法// stu1->showAge(); //方法1:// (*stu1).showAge(); //方法2:解引用法// delete stu1;SmartPoint sp(new Students04(18)); // sp 是个实例化对象 对象不是指针,不能用->符号,所以要重载 sp->// sp 无法实现指针效果,再次重载->// sp 是个实例化对象 对象不是指针,不能用->符号,所以要重载 sp->// sp->->showAge(); // sp-> == this->m_stu// this->m_stu->showAge();// sp->->showAge();// 系统认为太丑了,所以两组箭头间化为1组sp->showAge();// sp无法实现指针效果,再次重载*(*sp).showAge();return 0;
}
这篇关于C++ 44 之 指针运算符的重载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!