定义抽象数据类型
默认构造函数
Sales_data()=default;
在C++11中,可以在参数列表后面写上=default来要求编译器生成构造函数,如果出现在类的内部,默认构造函数是内联的;如果出现在类的外部,则该成员默认情况下不是内联的。
访问控制与封装
使用class和struct定义类唯一的区别就是默认的访问权限
struct:无说明符为public
class:无说明符为private
类的其它特性
可变数据成员
class typename
{
public:
void some_member() const;
private:
mutable size_t access_cstr;//即使在一个const对象内也能被修改
}
void typename::some_member() const//是一个const成员函数,但仍然能改变access_cstr的值
{
++access_cstr;
}
友元关系不存在传递性
class A{
friend class B;
};
class B{
friend Class C;
};//A和C不是友元
构造函数再探
初始值列表
如果成员是const、引用,或某种未提供默认构造函数的类类型,必须通过构造函数初始值列表为这些成员提供初始值
ConstRef::ConstRef(int ii) :i(ii),ci(ii),ri(ii) {}
成员初始化的顺序
成员初始化顺序与它们在类定义中出现的顺序一致
聚合类
所有成员都是public
没有定义任何构造函数
没有类内初始值
没有基类,也没有virtual函数