#include<iostream>
using namespace std;
class Tesla
{
private:
int data;
public:
Tesla(int args = 0);
Tesla(const Tesla& object);
const Tesla& operator=(const Tesla& is_object);
~Tesla();
public:
Tesla* operator&()
{
cout << "reload &" << endl;
return this;
}
const Tesla* operator&()const
{
cout << "const reload &" << endl;
return this;
}
};
int main(){
Tesla T1;
Tesla* p = &T1;//当不写&运算符重载,发现也能取地址,说明系统内置了默认的取地址运算符重载
const Tesla T2;
const Tesla* q = &T2; //常量对象,只能调用调用常对象方法,发现也成了,说明系统内置了默认的常对象取地址运算符重载
//在C++中,所有的操作都是基于对象的
//例如cout << i;i之所以能输出,是因为运算符<<出现了重载
//这就是为什么不能cout << T1,因为系统没有内置,我自己也没写 operator<<()
return 0;
}
Tesla::Tesla(int args)
{
this->data = args;
cout << "constructor " << this << endl;
}
Tesla::Tesla(const Tesla& object)
{
this->data=object.data;
cout << "copy constructor " << this << endl;
}
const Tesla& Tesla::operator=(const Tesla& object)
{
if(this!=&object)
{
this->data = object.data;
}
cout << this << " = " << &object << endl;
return *this;
}
Tesla::~Tesla()
{
cout << "destructor " << this << endl;
}
006.取地址的两个内置默认函数
最新推荐文章于 2024-10-01 05:07:35 发布