【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++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,146评论 1 51
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 7,967评论 0 3
  • C++基础2:类与对象 1. 认识类与对象 什么是类(class)?类(class)是类型(type),是用户自定...
    jdzhangxin阅读 6,910评论 0 7
  • 她从小生活在一个缺爱,充满硝烟的家庭里长大,她学习聪明,却很叛逆,因为家里对她疏于管教,她的成绩总是中上等。上小学...
    Spring柴柴阅读 2,701评论 0 0
  • 原来,那段时光我们已走过 不过是时光那么短而已 可记忆却那么长 原来 我们已为了目标奋斗过 后来 我们要在迷茫中为...
    夜空星星泪阅读 1,410评论 3 2