C/C++中的常成员函数

代码:

1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class A{
 6     public:
 7         void func1(){
 8             cout<<"func1"<<endl;
 9         }
10         void func1()const{
11             cout<<"const func1"<<endl;
12         }
13         void func2()const{
14             cout<<"const func2"<<endl;
15         }
16         void func3(){
17             cout<<"func3"<<endl;
18         }
19 };
20 
21 int main(){
22 
23     A a1;
24     a1.func1();
25     a1.func2();
26 
27     A const a2;
28     a2.func1();
29     //a2.func3();编译错误
30 
31     return 0;
32 }

输出:

func1
const func2
const func1

分析:

  1. 常对象只能调用常成员函数。

    2. 普通对象可以调用全部成员函数。

    3. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。

  2. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。

    5. 在C++中,this指针被隐含地声明为: X const this,这意味着不能给this 指针赋值;

    在X类的const成员函数中,this指针的类型为:const X
    const, 这说明this指针所指向的这种对象是不可修改的(即不能对这种对象的数据成员进行赋值操作);

    6. 由于this并不是一个常规变量,所以,不能取得this的地址。

更详细的解释:http://blog.csdn.net/zhuyingqingfen/article/details/31751111

需要注意的是,常成员函数不能修改对象的成员变量。
原文链接: https://www.cnblogs.com/hu983/p/5479099.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/233183

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午3:48
下一篇 2023年2月13日 下午3:48

相关推荐