Cpp_this指针与常函数
2016-02-28 15:50
381 查看
1.this指针
1)每个类的构造函数和成员函数中都包含一个隐藏的该类类型的指针参数,名为this,该指针指向调用这个成员函数或正在被构造的对象。成员函数和构造函数中对该类其它成员的访问,都是通过this指针进行的。this指针可以在成员函数或构造函数内部直接显式地引用。2)显式使用this的场合
A.区分作用域 B.从类的内部向外部传递该类对象地址 C.从类的内部向外返回该类对象自身——返回自引用 D.从类的内部销毁该类对象自身——对象自毁
2.常函数
1)形如返回类型 函数名 (形参表) const { 函数体 }
的成员函数,其中的this指针是一个常指针,因此不能该函数中修改成员变量的值,这样的成员函数叫做常函数。
2)被mutable关键字修饰的成员变量可以在常函数中被修改。
3)非常对象既可以调用非常函数,也可以调用常函数,但是常对象只能调用常函数,不能调用非常函数。
4)函数名和形参表相同的成员函数,其常版本和非常版本可以构成重载关系,常对象调用常版本,非常对象调用非常版本。如果没有非常版本,那么非常对象也能调用常版本。
5)一般情况下,如果一个成员函数不修改任何成员变量,那么最好将其声明为常函数。假如根据需求不得不对个别成员变量进行修改,则可以通过对this指针去常,或者为需要修改的成员变量加mutable关键字的方法进行处理。
相关文章推荐
- Cpp_析构函数
- 算法代码实现之插入排序,C/C++实现
- c++中重载输出操作符
- 1075. PAT Judge (25)
- 【String类】C++:String类的传统写法与现代写法
- 【String类浅拷贝的实现】C++:String类引用计数浅拷贝的两种实现
- 【C++11新特性】 C++11智能指针之unique_ptr
- eclipse开发c++时cout和endl报错
- 【C语言】String类的写时拷贝
- C++学习笔记50——继承中的析构函数
- C++ char*,const char*,string的相互转换
- 【C语言】【面试题】C++中String类引用计数器的浅拷贝写法与深拷贝写法
- UVa 1583 - Digit Generator
- c++ gui qt4 chap02 gotocell
- C++ Primer 学习笔记——关联容器初识
- 【C语言】【面试题】C++中String类浅拷贝,深拷贝的传统写法与现代写法
- C++11 auto_ptr 的问题
- (C++)二叉树中的那些常见的面试题
- C++内存泄漏处理
- C语言 包含结构的结构