C++ this

03-11
### C++ 中 `this` 指针的使用方法 在 C++ 中,`this` 是一个指向当前对象的关键字。每当成员函数被调用时,编译器会自动传递一个隐式的参数给该函数,这个参数就是 `this` 指针[^1]。 #### 隐式传递 虽然程序员不需要显式地将 `this` 作为参数传递到成员函数中,但在类的方法内部可以访问并使用它来引用当前的对象实例。例如,在下面的例子中: ```cpp class Date { public: void Init(int year, int month, int day) { _year = year; _month = month; _day = day; // 显式使用 this 指针 this->_year = year; this->_month = month; this->_day = day; } private: int _year; int _month; int _day; }; ``` 这里展示了两种方式设置私有变量 `_year`, `_month`, 和 `_day` 的值:一种是直接赋值;另一种则是通过 `this->` 来指定这些成员属于哪个对象实例。这两种做法效果相同,不过后者更清晰地标明了操作的是本对象的数据成员。 #### 构造函数中的应用 除了普通成员函数外,在构造函数里也可以利用 `this` 指针来进行初始化列表的操作或者解决名称冲突等问题。比如当局部变量名与数据成员同名时,可以通过前缀 `this->` 来区分它们: ```cpp Date::Date(int year, int month, int day):_year(year), _month(month), _day(day){ } // 或者 void Date::Init(int year, int month, int day) { this->year = year; // 解决名字冲突 } ``` #### 返回当前对象 有时可能希望返回当前对象本身以便实现链式调用等功能,则可以直接返回 `*this` : ```cpp const Date& operator=(const Date &d) { if (this != &d) { // 自我赋值检查 _year = d._year; _month = d._month; _day = d._day; } return *this; } int main(){ Date date1(2023,8,9); Date date2; date2 = date1.Print().operator=(); // 假设Print也返回*this return 0; } ``` 上述代码片段演示了一个简单的拷贝赋值运算符重载版本以及如何在一个表达式中连续调用多个具有返回类型的成员函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值