如何上传模板到网站,页面有哪几个网站可以做,上海企业网络推广方案,sql与网站开发创作不易#xff0c;本篇文章如果帮助到了你#xff0c;还请点赞 关注支持一下♡#x16966;)!! 主页专栏有更多知识#xff0c;如有疑问欢迎大家指正讨论#xff0c;共同进步#xff01; #x1f525;c系列专栏#xff1a;C/C零基础到精通 #x1f525; 给大… 创作不易本篇文章如果帮助到了你还请点赞 关注支持一下♡)!! 主页专栏有更多知识如有疑问欢迎大家指正讨论共同进步 c系列专栏C/C零基础到精通 给大家跳段街舞感谢支持ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ c语言内容
专栏c语言之路重点知识整合
【c语言】全部知识点总结 目录 一、虚析构二、纯虚函数、抽象类三、多态的缺点 一、虚析构
继承中构造函数与析构函数执行的顺序
当使用父类类型指针指向子类对象实现多态时如果子类中额外申请了内存空间在执行析构函数时不会执行子类的析构函数
例如
class CFather
{
public:CFather() { cout CFather endl; }~CFather() { cout ~CFather endl; }
};class CSon :public CFather
{
public:CSon() {char* p new char[10];}~CSon(){cout ~CSon endl;}
};
int main()
{CFather* pfa new CSon;delete pfa;return 0;
}执行发现
子类中的析构函数并没有被调用子类中额外申请的内存空间也没有被回收 这个问题需要使用虚析构来解决
在父类的析构函数前加上关键字virtual使父类的析构函数变为虚析构
再次delete按照父-子—子-父的顺序执行析构函数 在实现多态时一定要将父类的析构变为虚析构 二、纯虚函数、抽象类
在多态下有时抽象出来的父类的虚函数作为接口函数不知道如何实现或不需要实现
只有继承的子类才明确如何实现就可以把父类的虚函数变为纯虚函数
做法是将父类中的虚函数加上 0 virtual void fun() 0;纯虚函数在当前类不必实现而子类必须要重写实现纯虚函数否则不能定义子类对象error:纯虚函数xxx 没有强制替代项 当类中存在纯虚函数时这个类就被称为抽象类抽象类不允许定义对象 接口类类中的所有虚函数都是纯虚函数
例如
class CFather
{
public://纯虚函数只声明不需要定义//在子类中一定要重写父类的这个纯虚函数否则不能定义子类对象error:纯虚函数xxx 没有强制替代项virtual void eat() 0;
};
class CSon :public CFather
{
public:void eat() { cout CSon::eat() endl; }
};
int main()
{CFather* pFa new CSon;pFa-eat();//CFather fa; //error: 不允许使用抽象类定义对象return 0;
}三、多态的缺点
效率问题多态是通过虚函数实现虚函数调用流程复杂效率低空间问题虚函数指针占用指针大小的空间且每个对象都会存在一份虚函数列表会随着继承的层级增大其大小只增不减安全问题如果一个函数是私有的函数就不要变为虚函数 大家的点赞、收藏、关注将是我更新的最大动力 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大我会继续不断努力提供有价值的内容如果本文哪里有错误的地方还请大家多多指出(●◡●)