1.
功能晚绑定时运行时完成。
class Point
{
public:
virtual double Area(){}
...
}
class Circle:public Point
{
public:
double Area(){} //仍为虚函数,重定义时virtual可写也可不写
}
double CalcArea(Point &ref){}
//程序运行时根据ref所引用的对象调用该对象的成员函数。
虚函数不能是友元,静态函数,不能是内联,构造函数。可以是析构函数。
2.
纯虚函数:
virtual 函数类型 函数名() = 0;
各派生类根据要求再重新定义这些虚函数。
抽象类(至少含一个纯虚函数)只能作为其它类的基类,不能建立对象,抽象类中可以定义普通函数。
3.
友元:
class Date;
class Clock;
class Clock
{
public:
friend void Display(Clock &);
}
class Date
{
public:
friend void Clock::Display(Date &);
}
也可以友元类:
friend 类名;
4.
静态成员:
static int sum;
static int Display();
它为类的所有对象共享,在所有对象外单独开辟空间,即使不定义对象,也分配空间(编译时)。
静态成员初始化:
数据类型 类名::静态数据成员名 = 初值;
不能再类声明中初始化。
静态成员函数不能默认访问本类的非静态成员,没有this指针。
访问方式:
class Student;
Student s1;
Student::sum ;
或s1.sum ;