美文网首页
【C++面向对象备忘录】2 各类对象与特性

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

作者: shawn233 | 来源:发表于2018-02-27 16:58 被阅读0次

    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 各类对象与特性

          本文链接:https://www.haomeiwen.com/subject/mjemxftx.html