本文PDF下载站点: https://github.com/MrWang522/Private-Document.git
1. 基本用法
C++类对象中 的 成员变量 和 成员函数 是分开存储的 :
- 普通成员变量:存储于对象中,与 struct 变量有相同的内存布局和字节对齐方式
- 静态成员变量:存储于全局数据区中
- 成员函数 :存储于代码段中
- C++中类的 普通成员函数 都隐式包含一个指向当前对象的this指针, 而 静态函数 没有 !!!
class Person{
public:
Person():age(25){}
~Person(){}
int get_age() const{ // 编译器为我们自动转为: get_age(const Person* const pThis)
return this->age;
}
private:
int age;
};
void function(){
Person p;
cout << p.get_age() << endl; // 编译器为我们自动转为 p.get_age(&p)
}
2. const 修饰类的成员函数
- const 修饰的是 this 指针所指向的内存空间, 修饰的是this指针
class Person{
int a;
public:
const void Fun1() { /*****/ }
void const Fun2() { /*****/ }
void Fun3(int a) const{ // 以上三种效果一样。一般采用这种写法! 编译器自动转为:void Fun3(const Person* const pThis, int a)
this->a = 100; // 不可修改(编译器报错)
this = 0x11111; // 不可修改 (编译器报错)
}
};
C++编译器自动隐式转为: void Fun3(int a) const -------> void Fun3(const Person* const pThis, int a)