自学内容网 自学内容网

【C++ | tips】const Date* operator&() const中这两个const有什么区别?他们的作用是什么?

const Date* operator&() const 
{  
    return this;  
}

我们要明白operator&()这个函数是做什么的。

在C++中,&操作符通常用于获取一个对象的地址。但是,有时候我们想要自定义这个行为,比如说,我们想要控制别人怎么获取我们对象的地址。这时,我们就可以重载operator&()函数


现在,我们来看const Date* operator&() const这个声明。这里面有两个const,我们一个一个来说。

第一个const(在Date*前面):


这个const是告诉我们,通过这个operator&()函数返回的指针,它指向的是一个“不能改”的Date对象

就像你有一个玩具车,但是有人告诉你这个玩具车是“不能拆”的,你只能看,不能拆开它里面的零件。这里的“不能改”的Date对象也是这个意思,你只能通过这个指针来访问Date对象的内容,但是不能修改它。

第二个const(在函数声明的末尾):

这个const其实是告诉我们这个函数是一个“不会改变对象状态”的函数。就像你去图书馆借书,你只是在图书馆里看看书,不会把书带走或者把书弄坏。

这里的函数也是这样的,它只是在你的对象上做了一个“查看地址”的操作,没有做任何会改变你对象状态的事情。

对于operator&()这个函数来说,加上这个const可以让代码更加清晰,表明这个函数的意图是安全的,可以在常量对象上调用。


总结一下,const Date* operator&() const这个函数的意思是:

我提供了一个获取我对象地址的方法,但是这个地址指向的是一个你不能修改的Date对象,而且这个方法本身也不会改变我的对象状态。” 

这样,别人就可以安全地通过这个方法来获取你的对象的地址,同时也不用担心会不小心修改到你的对象。

 


原文地址:https://blog.csdn.net/lsj1345714539566/article/details/142327005

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!