- 在Date类中有 Init 和 print两个成员函数,函数体中没有关于不同函数的区分但是我们在对d1 和d2两个对象进行初始化的时候是如何进行区分的呢?解决问题的方法就是在C++中提供了this指针。
- 编译器编译后,都会默认在类的成员函数的形参前面添加一个当前类类型的this指针,比如Date类中的Init成员函数的原型是:void Init(Date const this, int year, int month, int day)*
- 类中的成员函数访问成员变量本质上都是通过this指针进行访问的比如在Init中给year赋值本质上是:this->_year = year
- C++规定不能在实参和形参的位置上显示写this指针但是可以在函数体内显示使用this指针
class Date
{
public:
void Init(size_t year = 2024, size_t month = 10, size_t day = 5)
{
this->_year = year;
this->_month = month;
this->_day = day;
}
void print()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
private:
size_t _year;
size_t _month;
size_t _day;
};