欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > C++_类和对象(中篇)—— const成员函数、取地址运算符的重载

C++_类和对象(中篇)—— const成员函数、取地址运算符的重载

2025/10/29 13:25:49 来源:https://blog.csdn.net/2302_80871796/article/details/142346213  浏览:    关键词:C++_类和对象(中篇)—— const成员函数、取地址运算符的重载

目录

三、类和对象(中)

6、取地址运算符重载

1、const成员函数

2、取地址运算符的重载 


三、类和对象(中)

6、取地址运算符重载

1、const成员函数

  1. 将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后面。
  2. const实际修饰该成员函数隐含的this指针指向的对象,表明在该成员函数中不能对类的任何成员进行修改。没有修改的话就可以加,修改的话就不可以加const。
  3. const 修饰Date类的Print成员函数,Print隐含的this指针由 Date* const this 变为 const Date* const this
    #include<iostream>
    using namespace std;
    class Date
    {
    public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}//若不加上const,则为void Print(Date* const this),this指针中的const修饰的是指针不能被改变// void Print(const Date* const this) constvoid Print() const{cout << _year << "-" << _month << "-" << _day << endl;}private:int _year;int _month;int _day;
    };int main()
    {// 这⾥⾮const对象也可以调⽤const成员函数是⼀种权限的缩⼩Date d1(2024, 7, 5);//&d -> Date*d1.Print();const Date d2(2024, 8, 5);//&d -> const Date*d2.Print();return 0;
    }

总结:一个成员函数,不修改成员变量的建议都加上。 c2821e9ff43843618ba4f742822423aa.png 

更多详细例子可以去看博主的C++_类与对象(中篇)的日期类实现中的const修饰:C++_类和对象(中篇)—— 运算符重载、赋值运算符重载、日期类实现-CSDN博客

2、取地址运算符的重载 

  1. 取地址运算符重载分为普通取地址运算符重载和const取地址运算符重载。
  2. ⼀般这两个函数编译器自动生成的就可以够我们用了,不需要去显示实现。
  3. 除非⼀些很特殊的场景,比如我们不想让别人取到当前类对象的地址,就可以自己实现⼀份,胡乱返回⼀个地址。
    class Date
    {
    public :Date* operator&(){return this;// return nullptr;}const Date* operator&()const{return this;// return nullptr;}private :int _year ; // 年int _month ; // ⽉int _day ; // ⽇
    };

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词