this 的核心含义
- 存储位置:由编译器自动添加到成员函数的参数列表中(成员函数:定义在类内部的函数)
- 指向对象:始终指向当前调用该成员函数的对象
- 示例代码
class MyClass {
public:
int value;
void setValue(int value) {
this->value = value;
}
void printValue() {
cout << "value: " << this->value << endl;
}
};
成员变量分类
静态成员
- 静态成员变量
- 声明方式:在成员变量声明前加上
static 关键字。
- 内存分配:静态成员变量在程序开始时分配内存,在程序结束时释放内存。
- 初始化:必须在类定义外部进行初始化。
- 访问方式:可以通过类名和作用域解析符
:: 访问,也可以通过对象访问。
- 静态成员函数
- 声明方式:在成员函数声明前加上
static 关键字。
- 特点:
- 没有
this 指针,因此无法访问非静态成员变量或调用非静态成员函数。
- 可以访问静态成员变量和调用静态成员函数。
- 访问方式:可以通过类名和作用域解析符
:: 访问。
- 示例代码
class MyClass {
public:
static int count;
static void printCount() {
cout << "Count: " << count << endl;
}
};
int MyClass::count = 0;
int main() {
MyClass::count = 10;
MyClass::printCount();
MyClass obj;
obj.count = 20;
obj.printCount();
return 0;
}
常量成员
- 常量成员变量
- 声明方式:在成员变量声明前加上
const 关键字。
- 初始化:只能在构造函数初始化列表中进行初始化。
- 常量成员函数
- 声明方式:在成员函数声明后加上
const 关键字。
- 特点:
- 不能修改任何成员变量的值。
- 不能调用非
const 成员函数。
this 指针是指向常量的指针,即 const MyClass* const。
- 示例代码
class MyClass {
public:
const int value;
MyClass(int val) : value(val) {}
int getValue() const {
return value;
}
};
int main() {
MyClass obj(10);
cout << "Value: " << obj.getValue() << endl;
return 0;
}