charpter7 类
定义抽象数据类型
- 类中this一般指这个对象,类型为指向类 类型非常量 的常量指针,即
Struct_name *const // 常量指针,指向对象为非常量
- 如何转为指向常量的指针,在类成员函数参数列表之后添加const即可,该函数为常量成员函数,无法修改对象的内容。
- 常量对象,常量对象的引用或指针只能调用常量成员函数。
- 定义一个返回this对象的函数
函数的返回类型必须为 对象的引用 如 Sales_data &,返回语句为return *this
构造函数
- 当需要默认构造函数时,一般写为
类名()=default
- 构造函数初始值列表
类名(形参) : 类成员(参数名),类成员(参数名)...){}
示例 ` Sales_data(const std::string &s,unsigned n,double p) : bookNo(s),units_sold(n),revenue(p*n){ }友元
- 类允许其他类或者函数访问它的非公有成员,方法是零其他类或者函数成为他的友元。在类中添加友元函数声明即可,
friend 函数名
- 友元函数的声明与类本身放置在同一个头文件中
类的其他特性
- 内联函数 : 当函数在类内部定义时,默认为内联函数。在外部定义时需添加inline
- 友元类: 某个类访问其他类中的私有成员,必须声明为友元类。如A访问B,则在B中声明
friend class A
,友元关系不具有传递性 - 友元函数: 某个类的成员函数访问其他类中的私有成员,必须声明为友元函数。如类A中func1访问类B,则在B中声明
friend A::func1
. - 友元声明的函数或类必须在使用之前显示声明
再探构造函数
- 构造函数的初始值必不可少: 如果成员是const,或者引用必须通过构造函数初始值列表为成员提供处置。
- 默认构造函数
类名 对象名
,注意,不需要括号。类的静态成员
- 关键词static ,静态数据成员的类型可以是常量,引用,指针。静态成员函数不能声明为const以及包含this指针
- 使用静态成员
类名::静态成员
或者与普通一样使用