2、this指针概念.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //4.3.2 this 指针概念
  2. //通过4.3.1我们知道在C++中成员变量和成员函数是分开储存的
  3. //每一个非静态成员函数智慧诞生一份函数实例,也就是说多个同类型的对象会共用一块代码
  4. //那么问题是:这一块代码是如何区分那个对象调用自己的呢?
  5. //C++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象
  6. //this指针是隐含每一个非静态成员函数内的一种指针
  7. //this指针不需要定义,直接访问即可
  8. //this指针的用途:
  9. //⚪当形参和成员变量同名时,可用this指针来区分
  10. //⚪再类的非静态成员函数中返回对象本身,可使用return *this
  11. #if(0)
  12. #include <iostream>
  13. class Person
  14. {
  15. public:
  16. Person(int age)
  17. {
  18. //this指针指向被调用的成员函数所属的对象
  19. this->age = age;
  20. }
  21. Person PersonAddAge(Person& p)
  22. {
  23. this->age += p.age;
  24. //this指向p2的指针,而*this指向的就是p2这个对象本体
  25. return *this;
  26. }
  27. int age;
  28. };
  29. //1、解决名称冲突
  30. void test01()
  31. {
  32. Person p1(18);
  33. std::cout << "P1的年龄为:" << p1.age << std::endl;
  34. }
  35. //2、返回对象本身用*this
  36. void test02()
  37. {
  38. Person p1(10);
  39. Person p2(10);
  40. //链式编程思想
  41. p2.PersonAddAge(p1).PersonAddAge(p1).PersonAddAge(p1);
  42. std::cout << "P2的年龄为:" << p2.age << std::endl;
  43. }
  44. int main()
  45. {
  46. //test01();
  47. test02();
  48. system("pause");
  49. return 0;
  50. }
  51. #endif