Skip to content

静态成员

静态成员就是在成员变量和函数前面加入关键词 static,称为静态成员

静态成员分为:

  • 静态成员变量

    • 所有对象共有一份数据
    • 在编译阶段分配内存
    • 类内声明类内初始化
  • 静态成员函数

    • 所有对象公用一个函数
    • 静态成员函数只能访问静态成员对象

C++对象模型和 this 指针

成员变量和成员函数分块储存

在 C++中类内的成员变量和成员函数是分开储存的 只有非静态成员变量才属于类的对象上

this 指针

通过上面我们知道在 C++中成员变量和成员函数是分开存储的

每一个静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会改用一块代码

那么问题是:这一块代码怎么区分哪个对象调用自己呢?

C++通过提供一种特殊的对象指针————this指针来解决上述问题. this 指针指向被调用的成员函数所属的对象

this 指针是隐含每一个非静态成员函数的一种指针

this 指针不需要被定义,直接使用就行

this 指针的用途:

  • 当形参和成员变量同名时,可用 this 指针区分
  • 在类的非静态成员中返回对象本身,可以用return *this

空指针访问成员函数

C++中的空指针也是可以调用成员函数的,但是也要注意有没有用到this指针

如果用到 this 指针,需要加以判断代码的健壮性

const

常函数

  • 成员函数后面加 const 后我们称为这个函数的常函数
  • 常函数内不可以修改成员属性
  • 成员属性声明时加上关键词 mutable,常函数依然可以访问

常对象

  • 声明对象前加 const 称该对象为常对象
  • 常对象只能调用常函数