第十二章 类

    技术2024-06-24  70

    12.1 类的定义和声明

    class Screen;//这个是向前声明

    当只有向前声明出现过,数据成员只能是该类型的引用或者指针

    12.2 隐含的this指针

    class Screen

    {

             mutable size_t access_ctr;//mutable使得该变量可以在const函数中被修改

    };

    12.4 构造函数

    1)  const对象的初始化也要在普通的构造函数中进行,但是static const 则在类定义体中初始化

     

    2)  初始化列表

    初始化列表存在的必要性: 为没有默认构造函数的类类型成员初始化,const,引用类型的成员初始化

     

    初始化列表初始化的顺序是变量声明的顺序.

     

    3) 隐式类类型转换

    例子 :

    因为string类中有用char*初始化的构造函数,所以当出现这种情况的时候

    class A{

    void function a(string str);

    };

    调用的时候

    a(“bbb”);// “bbb”将隐式地被转换为string(“bbb”);

     

    抑制由构造函数定义的隐式转换

    class A{

    explicit bool function a(string str);//explicit只用在构造函数上

    };

     

    4) 类成员的显式初始化

    12.5 友元

    class A{

    friend class B;

    };

     

    class A{

    friend bool B::function();

    };

     

    友元标识的位置可以在类中的任意位置

    12.6  static

    类中static 函数没有this指针,可用做默认实参

     

    最新回复(0)