【C++面向对象备忘录】2 各类对象与特性

const 对象

  • const对象的定义:
    const MyClass obj(参数表);
  • const对象不能被赋值,只能初始化,而且一定要初始化,否则无法设置它的值。

  • C++规定:对const对象只能调用const成员函数

const 成员函数

任何不修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其他非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。

定义时和实现时在函数头后添加const关键字

const数据成员

  • const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。同一类的不同的对象其const数据成员的值可以不同。

  • 常量(const)数据成员声明:在该成员声明前加const关键字

  • const数据成员的初始化只能在类构造函数的初始化表中进行,不能在构造函数中对它赋值。

static数据成员

【静态(static)数据成员】

  • 静态数据成员不属于对象的一部分,而是类的一部分;
  • 静态数据成员的初始化不能放在类的构造函数中;
  • 类定义并不分配空间,空间是在定义对象时分配;
  • 但静态数据成员属于类,因此定义对象时并不为静态成员分配空间。

【静态数据成员的定义】

  • 为静态成员分配空间称为静态成员的定义;
  • 静态成员的定义一般出现在类的实现文件中。如在SavingAccount类的实现文件中,必须要如下的定义:
double SavingAccount::rate = 0.05;
  • 该定义为rate分配了空间,并给它赋了一个初值0.05。
    如果没有这个定义,连接器会报告一个错误。

【静态数据成员的使用】

  • 可以通过作用域操作符从类直接调用。如:
SavingAccount::rate 
  • 但从每个对象的角度来看,它似乎又是对象的一部分,因此又可以从对象引用它。如有个SavingAccount类的对象obj,则可以用:
obj.rate
  • 由于是整个类共享的,因此不管用哪种调用方式,得到的值都是相同的

static成员函数

定义静态成员函数的主要目的是访问静态的数据成员。

【静态(static)成员函数】

  • 成员函数也可以是静态的。静态的成员函数是为类的全体对象服务,而不是为某个类的特殊对象服务
  • 由于静态成员函数不需要借助任何对象就可以被调用,所以编译器不会为它暗加一个this指针。因此,静态成员函数无法处理类中的非静态成员变量。
  • 静态成员函数的声明只需要在类定义中的函数原型前加上保留词static

【静态成员函数使用】

  • 静态成员函数可定义为内嵌的,也可在类外定义。在类外定义时,不用static
  • 静态成员函数的访问:可以通过类作用域限定符或通过对象访问
类名::静态成员函数名()
对象名.静态成员函数名()

你可能感兴趣的:(【C++面向对象备忘录】2 各类对象与特性)