12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //4.3.2 this 指针概念
- //通过4.3.1我们知道在C++中成员变量和成员函数是分开储存的
- //每一个非静态成员函数智慧诞生一份函数实例,也就是说多个同类型的对象会共用一块代码
- //那么问题是:这一块代码是如何区分那个对象调用自己的呢?
- //C++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象
- //this指针是隐含每一个非静态成员函数内的一种指针
- //this指针不需要定义,直接访问即可
- //this指针的用途:
- //⚪当形参和成员变量同名时,可用this指针来区分
- //⚪再类的非静态成员函数中返回对象本身,可使用return *this
- #if(0)
- #include <iostream>
- class Person
- {
- public:
- Person(int age)
- {
-
- //this指针指向被调用的成员函数所属的对象
- this->age = age;
- }
- Person PersonAddAge(Person& p)
- {
- this->age += p.age;
- //this指向p2的指针,而*this指向的就是p2这个对象本体
- return *this;
- }
- int age;
- };
- //1、解决名称冲突
- void test01()
- {
- Person p1(18);
- std::cout << "P1的年龄为:" << p1.age << std::endl;
- }
- //2、返回对象本身用*this
- void test02()
- {
- Person p1(10);
-
- Person p2(10);
- //链式编程思想
- p2.PersonAddAge(p1).PersonAddAge(p1).PersonAddAge(p1);
- std::cout << "P2的年龄为:" << p2.age << std::endl;
- }
- int main()
- {
- //test01();
- test02();
- system("pause");
- return 0;
- }
- #endif
|