虚函数、C++类、结构体、父类与子类的继承性

转载请注明出处! 

结构体只是多个关联变量的集合,不包含函数。

在面向对象的程序设计中,对象具有状态和行为,状态保存在成员变量中,行为通过成员函数实现。所以,类应运而生。

结构体的默认情况下,成员变量是共有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关键字,在派生类(子类)中重写该函数,运行时就会根据对象的实际类型来调用相应的函数。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值