当前位置: 首页 > news >正文

网站服务器租用多少钱一年合适网站快速排名推广软件

网站服务器租用多少钱一年合适,网站快速排名推广软件,邢台网站制作平台,个人网站怎么做支付宝接口纯虚析构的问题 多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。 解决方式:将父类中的析构函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性: 可以解决父类指针释放子类对象都需要有…

纯虚析构的问题

多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。

解决方式:将父类中的析构函数改为虚析构或者纯虚析构

虚析构和纯虚析构共性:

  • 可以解决父类指针释放子类对象
  • 都需要有具体的函数实现

虚析构和纯虚析构区别:

  • 如果是纯虚析构,该类属于抽象类,无法实例化对象

虚析构语法:

virtual ~类名(){}

纯虚析构语法:

virtual ~类名() = 0;

类名::~类名(){}

示例:

class Animal {
public:Animal(){cout << "Animal 构造函数调用!" << endl;}virtual void Speak() = 0;//析构函数加上virtual关键字,变成虚析构函数//virtual ~Animal()//{//	cout << "Animal虚析构函数调用!" << endl;//}virtual ~Animal() = 0;
};Animal::~Animal()
{cout << "Animal 纯虚析构函数调用!" << endl;
}//和包含普通纯虚函数的类一样,包含了纯虚析构函数的类也是一个抽象类。不能够被实例化。class Cat : public Animal {
public:Cat(string name){cout << "Cat构造函数调用!" << endl;m_Name = new string(name);}virtual void Speak(){cout << *m_Name <<  "小猫在说话!" << endl;}~Cat(){cout << "Cat析构函数调用!" << endl;if (this->m_Name != NULL) {delete m_Name;m_Name = NULL;}}public:string *m_Name;
};void test01()
{Animal *animal = new Cat("Tom");animal->Speak();//通过父类指针去释放,会导致子类对象可能清理不干净,造成内存泄漏//怎么解决?给基类增加一个虚析构函数//虚析构函数就是用来解决通过父类指针释放子类对象delete animal;
}int main() {test01();system("pause");return 0;
}

注意:即使是纯虚析构也需要有具体的实现。因为包含纯虚函数的类为抽象类,被继承后,在派生类析构函数被调用时抽象类析构函数也将被调用,因此必须有实现。唯一麻烦就是必须在类的定义之外(cpp文件)实现它。

总结:

​ 1. 虚析构或纯虚析构就是用来解决通过父类指针释放子类对象

​ 2. 如果子类中没有堆区数据,可以不写为虚析构或纯虚析构

​ 3. 拥有纯虚析构函数的类也属于抽象类



纯虚函数的实现案例:纯虚析构函数必须有实现

纯虚函数可以有实现:唯一麻烦就是必须在类的定义之外(cpp文件)实现它。
申明一个函数为纯虚并不意味着它没有实现,它意味着:

  • 当前类是抽象类 ;
  • 任何从此类派生的实体类必须将此函数申明为一个“普通”的虚函数(也就是说,
    不能带“= 0”)。

1、纯虚函数例子:

声明一个pure virtual 函数的目的是为了让 derived classes 只继承函数接口,派生类必须提供实现
可以为pure virtual函数提供实现,但使用时需要指明所属类,如:

//.h
class A{
public:virtual void func1() = 0;
};
class B : public A{
public:virtual void func1(){A::func1();};
};//.cpp
void A::func1(){..........}B b;
b.A::func1(); // 与b.func1()结果相同,相当于提供了缺省实现,但派生类需要主动指定。



2、纯虚析构函数必须有实现:

因为包含纯虚函数的类为抽象类,被继承后,在派生类析构函数被调用时抽象类析构函数也将被调用,因此必须有实现

class A{
public:virtual ~A() = 0;
};//.cpp
A::~A(){...}

总结:
1、纯虚函数可以有实现,但必须在类的定义之外(cpp文件)实现。
2、纯虚析构函数必须有实现。





参考链接:
纯虚函数的实现案例:纯虚析构函数必须有实现

http://www.dinnco.com/news/58987.html

相关文章:

  • 长沙做黄叶和网站的公司有哪些关键词查找网站
  • 上市公司网站建设评价百度seo快速
  • 怎么给自己喜欢的人做网站怎么制作百度网页
  • 亚购物车功能网站怎么做的亚洲7号卫星电视
  • 室内设计很多人都干不下去了优化大师电脑版下载
  • 想开一个网站开发的公司营销方案怎么写模板
  • 合肥专业手机网站制作价格西安网络优化培训机构公司
  • 网站建设_聊城关键词简谱
  • 中国男女直接做的视频网站竞价专员是做什么的
  • 公众号开发 网站开发seo公司的选上海百首网络
  • 如何做网站地图txt网络营销创意案例
  • 唐山模板网站建设石家庄seo外包的公司
  • lamp网站开发 pdfseo软件下载
  • 无需登录免费观看的直播抖音关键词排名优化软件
  • 个人建网站大概多少钱seo页面优化的方法
  • 龙岗在线网站制作百度怎么发布广告
  • 做运营需要看的网站免费seo课程
  • 织梦网站模板怎么做企业查询软件
  • 与小学生一起做网站国内新闻最新消息今天简短
  • 北京建设监管部门网站怎么做线上推广
  • 企业网站建设怎么做网络营销渠道的特点
  • 网站的大图标怎么做的短视频营销策略有哪些
  • 个人门户网站备案长沙seo公司
  • 做夹具需要知道的几个网站网络营销概念是什么
  • 武汉工业网站制作营销策划方案公司
  • 举报网站建设情况汇报免费网络营销方式
  • 山东青岛网站建设公司排名找竞价托管公司
  • 哈尔滨网站建设公司那家好网站制作教程
  • 有谁做分销网站seo关键词排名点击工具
  • 建网站需要什么程序厦门谷歌推广