取地址及 const取地址操作符重载

取地址及 const取地址操作符重载

#include 
using namespace std;

class A
{
public:
	A(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}

	//它们是默认成员函数,我们不写编译器会自动生成,自动生成就够用了,所以一般是不需要我们自己写的。
	// 除非,对象的地址不想让别人取到。
	A* operator&()
	{
		return nullptr;
	}
	//上下两个函数需要同时写,因为返回值类型不同
	const A* operator&()const
	{
		return nullptr;
	}



	void Print()
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}
	// 上下两个函数构成函数重载(也可以只写一个)
	void Print()const
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}

private:
	int _year;
	int _month;
	int _day;

};

int main()
{
	A d1(2023, 8, 8);
	const A d2(2023, 9, 1);
	d1.Print();  //权限的缩小 A* --- const A*
	d2.Print();  //权限的平移 A* --- A*


	cout << &d1 << endl;
	cout << &d2 << endl;

	return 0;
}

你可能感兴趣的:(c++)