C++类作用域和this指针

类的作用域

在C++中,每个类定义了自己的作用域和唯一的类型。这意味着在类内部声明的成员(函数和变量)都被引入了这个类的作用域。一个类的作用域可以分为三个主要部分:

  1. 类定义体: 包含类的成员声明和定义的地方。

  2. 类外成员函数的形参表: 类外定义的成员函数的参数列表仍处于类作用域中。

  3. 类外成员函数的函数体: 成员函数的实现,也在类的作用域内,但其返回类型不在类作用域中。

如下 Clock类 HOUR GetHour() const; 编译错误,因成员函数的返回类型不在类作用域中

class Clock {
public:
typedef int HOUR;
typedef int MINUTE;

void SetTime(int newHour, int newMinute);
void ShowTime() const;

HOUR GetHour() const; //不在类的作用域

private:
HOUR m_Hour;
MINUTE m_Minute;
};

this指针

每个非静态成员函数都有一个隐含的参数 this 指针,它指向调用该成员函数的对象。这使得成员函数可以访问该对象的私有数据和成员函数。

void Clock::SetTime(int newHour, int newMinute) {
this->m_Hour = newHour;
this->m_Minute = newMinute;
}

this 指针指向当前 Clock 对象,因此 this->m_Hourthis->m_Minute 访问的是当前对象的成员。

链式编程

利用 this 指针可以实现链式编程。成员函数可以返回 this 指针,从而允许在一个对象上连续调用多个成员函数。

Clock* Clock::SetTime(int newHour, int newMinute) {
this->m_Hour = newHour;
this->m_Minute = newMinute;
return this;
}

// 使用链式编程
Clock c1;
c1.SetTime(0, 0).ShowTime();

SetTime 返回 this 指针,使得可以在一个调用链中继续调用 ShowTime

------------------------------- 本文结束啦❤感谢您阅读-------------------------------
赞赏一杯咖啡