#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
class Person
{
public:
Person(const int& age) //编译器不会再提供默认的无参构造函数
{
//this指针指向 类中函数调用的 类的成员变量, 防止命名冲突
this->age = age;
}
bool compareAge(const Person& p)
{
if (age == p.age)
return true;
return false;
}
Person ageAdd()
{
age += 10;
return *this; //*this就是类实例化的Person
}
//实现两个对象的年龄相加,并返回一个新的对象
Person ageTwoAdd(const Person& p)
{
age = p.age + this->age;
return *this;
}
int age;
protected:
private:
};
void test01()
{
Person p1(20);
cout << "p1.age = " << p1.age << endl;
}
void test02()
{
Person p2(18);
cout << "p2.age = " << p2.age << endl;
Person p3(20);
cout << p2.compareAge(p3) << endl;
cout << p2.ageTwoAdd(p3).age << endl;
//p2.ageAdd().ageAdd().ageAdd().ageAdd(); Person& ageAdd()//链式编程
//cout << "p2.age = " << p2.age << endl;
//如果返回的是一个值: Person ageAdd()
p2.ageAdd().ageAdd().ageAdd().ageAdd();
//p2.ageAdd() => 调用ageAdd(), p2.age = 20, => 返回的是一个对p2拷贝后的类的对象p_2
//p_2.ageAdd() => 调用ageAdd(), p_2.age = 30, => 返回的是一个对p_2拷贝后的类的对象p_2_
//...
//最终p2.age的值只有第一次调用的时候被修改,其他都是对其拷贝构造函数进行操作
cout << "p2.age = " << p2.age << endl;
}
int main()
{
test01();
test02();
return 0;
}
C++有关this指针的解析
最新推荐文章于 2024-07-18 17:40:16 发布