以下两个默认成员函数一般不用重新定义,编译器默认会生成。
#include <iostream> using namespace std; class Date { public: Date() :_year(2023) ,_month(10) ,_day(28) {} Date* operator&() { return this; } const Date* operator&() const { return this; } private: int _year; int _month; int _day; }; int main() { Date a; cout << &a << endl; const Date b; cout << &b << endl; return 0; }
这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需
要重载,比如想让别人获取到指定的内容!
#include <iostream> using namespace std; class Date { public: Date() :_year(2023) ,_month(10) ,_day(28) {} Date* operator&() { return nullptr; } const Date* operator&() const { return this; } private: int _year; int _month; int _day; }; int main() { Date a; cout << &a << endl; const Date b; cout << &b << endl; return 0; }
甚至我们可以返回一个错误的地址(滑稽)