继承与多态

虚函数只要在基类里定义,所以继承类都不用重新定义为虚函数,自动成为虚函数。

虚函数必须有实现,普通成员函数在没有调用时可以没有实现(定义)。


class animal
{
public:
animal(){cout<<"animal"<<endl;}
virtual ~animal(){cout<<"~animal"<<endl;}
public:
virtual void speak(){cout<<"no speak"<<endl;}
void smile();

};

只需要在基类定义函数为虚,子类中不需要添加virtual.      smile函数在没有调用时可以不实现。

当有函数为虚函数时,析构函数应定义为virtual,负责不能正确调用析构函数。切记!!!!!

class cat:public animal
{
public:
cat(){cout<<"cat"<<endl;}
~cat(){cout<<"~cat"<<endl;}
public:
void speak(){cout<<"miaomiao"<<endl;}
};


class smallcat:public cat
{
public:
smallcat(){cout<<"smallcat"<<endl;}
~smallcat(){cout<<"~smallcat"<<endl;}
public:
void speak(){cout<<"small miaomiao"<<endl;}
};


///main.cpp

int main(int argc, char **argv)
{
animal *am = new smallcat();
delete am;
return 0;
}


以上输出为

animal
cat
smallcat
~smallcat
~cat
~animal



当析构函数不为虚函数时:

animal
cat
smallcat
~animal




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值