类中的三类方法

类中的三类方法

类中的三类方法:普通、静态(static)、常方法(const)

static:

  • 静态成员变量必须要在类外进行初始化;
  • 属于类但不属于对象,所以,计算类大小时,不算static成员变量大小;
  • 所有对象共用一个变量时使用static声明的变量;
  • static 成员方法没有this指针,直接用类的作用域调用;
  • static成员方法与变量在类外定义均不用加staic,但要加类作用域;
  • 普通成员方法可调用静态成员方法,static变量
  • static方法不能访问普通成员变量/方法(同一对象中的),只能访问其他static成员。

const

  • 常方法可访问不可修改
  • const对象无法调用普通成员方法

    问题1:static和const能共存吗?
    不能,static是把this指针没了,而const是给this指针加const,这两者是矛盾的。
    问题2:常对象为什么不能调普通方法?
    默认情况下,this指针是指向非常量版本的常量指针。我们不能把this绑定到一个常量对象上(即int *const 绑定到 int const)这样也就使我们不能在一个常量对象上调用普通成员函数。

mutable(突破const限制)

主要用于后来扩充时,从前写的常方法增加需求。(不过尽量还是不要使用)
三种方法使用注意:
- 普通成员方法可调用静态成员方法,static变量
- static方法不能访问普通成员变量/方法(同一对象中的),只能访问其他static成员。
- const对象无法调用普通成员方法
即普通方法都可调用(优先调普通),static只可调用同一对象static,const只可调const

猜你喜欢

转载自blog.csdn.net/guo3mao/article/details/80168590