private:定义私有成员,只能被类本身的成员函数和友元访问,其他类的成员函数包括派生类的成员函数都不能访问。
protected:可被类本身的成员函数、友元、派生类的成员函数访问。
作用域运算符::用来指定成员函数属于哪个类,给定作用域的大小。
在类体外定义成员函数的格式---
返回类型 类名::成员函数名(参数说明)
{
函数体;
}
163 成员访问:
一个对象的成员就是该对象的类所定义的成员,包括数据成员和成员函数。
对象名与成员访问运算符.一起使用;
指向对象的指针与箭头成员访问运算符->一起使用。
对于数据成员的访问---
对象名.成员名
(*对象指针名).成员名
对象指针名->成员名
对于成员函数的访问---
对象名.成员函数名(参数表)
(*对象指针名).成员函数名(参数表)
对象指针名->成员函数名(参数表)
263 虚函数【父类的指针和引用访问子类对象】
虚函数的声明只能出现在类声明的函数原型的声明中,不能出现在函数体实现中,同时基类中只有公有成员或保护成员才能被声明为虚函数;
在派生类中重新定义虚函数的时候,virtual可以不写;
动态联编只能通过成员函数来调用或通过指针、引用来访问虚函数,如果用对象名的形式来访问虚函数将采用静态联编;
虚函数必须是所在类的成员函数,不能使友元或静态成员函数;
虚函数可以在另一个类中被声明为友元函数;
构造函数不能被声明为虚函数,析构可以;
内联函数不能在运行中动态确定其位置,所以不能被声明为虚函数。
【重载--编译,虚函数--运行】
264 抽象类&纯虚函数
建立抽象类就为了通过它多态的使用其中的成员函数;
抽象类是带有至少一个纯虚函数的类;
纯虚函数的一般定义形式--
virtual 函数类型 函数名 (形参表)= 0;
纯虚函数没有函数体,不能被调用。一般是在定义抽象基类时用的。