友元不是类的成员函数
友元关系不能被继承,不具有交换性,不具有传递性
友元提高了程序的运行效率,但是破坏了类的封装性和隐藏性
归纳起来:友元函数是一种能够访问类中的私有成员的非成员函数
一个类的友元函数能够访问类的所有成员
C++不允许将构造函数和析构函数声明为友元函数
友元分为:友元函数friend void fun()和友元类friend class B

C++默认采用4字节对齐单位,因为这样可以存取更便捷,提高了程序的执行效率
在类中实现的函数是内联函数
在类体中不允许对所定义的数据成员进行初始化,因为数据成员初始化专门由构造函数来实现

引用作为目标的别名而使用,对引用的改动实际上是对目标的改动
C++的继承性允许派生类继承基类的部分特性 //有的书说继承全部特性

运算符重载有两种形式:成员函数形式和友元函数形式,这两种形都可以访问类中的私有成员
setprecision(5)表示保留5个有效数字

编译时的多态性是通过函数重载和运算符重载实现的
const char *p说明禁止通过p修改指向的数据
char *const p说明不能修改指针p的地址(本身)
const char *const p="ABCD"说明它禁止修改指针p本身,又禁止修改p所指向的数据

所谓多态性是指:不同的对象调用相同名称的函数
析构函数不能有参数和返回值,也不能重载,一个类中最多只能定义一个析构函数
istream和ostream的直接基类是ios流基类

在c++中有两种参数传递方式:传值和传引用
抽象类不能被实例化,但可以声明指针或引用
c++中只为每个对象的数据成员分配内存空间,类中的成员函数放在公共区中,每个对象存放指向公共区的地址
程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数
静态数据成员是类的所有对象共享的成员,可以节省内存,也称为类成员
静态成员函数中不能直接引用类的非静态数据成员,只能直接引用类的静态数据成员
this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象
静态成员函数没有this指针,友元函数也没有this指针

构造函数不能声明为虚函数,析构函数可以声明为虚函数
当用基类的指针或基类的引用来访问虚函数时,虚函数能够实现多态。
构造函数和析构函数都不能被继承
对虚函数的调用,不一定使用动态联编,采用静态联编也可以
抽象类的派生类依然可以是抽象类
自身类对象不能作为类的成员,否则出现循环定义

c++的流库预定义了4个流,他们是cin,cout,cerr,clog
复制构造函数:用一个对象初始化另一个对象
浅复制:一个对象的销毁会影响另一个对象
深复制:一个对象的销毁不会影响另一个对象
静态对象仅在函数第一次进入时创建该对象
类是将数据和作用在这些数据上的操作组合在一起的一种数据类型

构造函数用于初始化对象
普通成员函数可以调用静态函数,而静态函数不能调用普通成员函数
多态性包括静态(编译时)和动态(运行时)的多态性
在构造函数和析构函数中调用虚函数时采用静态联编

运算符重载四不变:优先级,操作数个数,结合性,语法结构
利用成员函数对双目运算符重载,其左操作数为this指针,右操作数为成员函数参数
私有成员:只能被类本身的成员函数和友元类的成员函数访问
保护成员:能为类本身的成员函数访问和友元访问,还有公有派生和保护派生的成员访问。

设置虚基类的目的是为了消除二义性
一个类的构造函数必须包含对其子对象的初始化
虚函数是成员函数,且为非static的成员函数