码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-05-10 20:48:36      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

代码:

 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指针。

4. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。
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

需要注意的是,常成员函数不能修改对象的成员变量。

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

标签:

原文地址:http://www.cnblogs.com/hu983/p/5479099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!