转载请注明出处!
结构体只是多个关联变量的集合,不包含函数。
在面向对象的程序设计中,对象具有状态和行为,状态保存在成员变量中,行为通过成员函数实现。所以,类应运而生。
结构体的默认情况下,成员变量是共有public所有人都可以访问,类的默认情况下式private只有类成员函数可以访问。
Public:可以任何地方访问,protected:在该类和子类中访问。Private:该类自身中访问。
C++具有继承性,我们可以基于父类,创建子类。 比如可以基于CStatic 类创建一个子类CImshow类,用于显示图像。CImshow类中的对象可以调用父类CStatic中的函数。即子类可以写自己的函数,还可以调用父类的函数,这就是继承的好处。运行时,是先调用父类(父亲)的构造函数,在调用子类(孩子)的构造函数。
Void Main() //孙鑫 P49;
{
Anminal *pAn; // 父类
Fish fh; //子类
pAn = &fh;
fn(pAn); //全局函数
}
将子类的对象地址赋给父类的指针变量,在运行时,C++自动将子类转换成父类,调用父类的breath函数(有问题)。这是因为C++在编译时就确定了那个函数被调用,这叫做早期调用。
我们需要在运行时,根据对象的类型来调用是父类函数或子类的函数的迟绑定(这就是多态性)。这就是虚函数(虚函数virtual解决)。 在基类(父类)函数前加上virtual关键字,在派生类(子类)中重写该函数,运行时就会根据对象的实际类型来调用相应的函数。