注册MS CRM Licenses 时需要注意的几个问题:
2010-04-20 17:34
183 查看
问:虚析构函数什么时候使用?
先看以下代码:
class A
{
public:
A(){}
~A()
{
cout<<"virtual function of class A"<<endl;
}
virtual void f()
{
cout<<"f() of class A"<<endl;
}
};
class B:public A
{
public:
B()
{
pInt = new int[10];
}
~B()
{
delete[] pInt;
cout<<"virtual function of class B"<<endl;
}
virtual void f()
{
cout<<"f() of class B"<<endl;
}
private:
int *pInt;
};
int main()
{
A *a = new B();
a->f();
delete a;
return 0;
}
执行结果:
f() of class B
virtual function of class A
从结果可以看出问题了吧!
造成的问题:~B没有被执行,pInt所占的内存不能得到释放,造成内存泄漏。
原因:a的声明类型为类A。
解决办法:将~A() 改成 virtual ~A()
更改后的执行结果:
f() of class B
virtual function of class B
virtual function of class A
那什么时候使用虚析构函数呢?
答:当类作为基类出现,同时基类中有虚函数时,最好将基类的析构函数作为虚函数。
虚析构函数和普通虚函数有点还有点不一样:虚析构函数会同时执行父类和子类的虚析构方法,但对普通虚函数,只会执行子类的虚函数。
从老师那里学来的...
先看以下代码:
class A
{
public:
A(){}
~A()
{
cout<<"virtual function of class A"<<endl;
}
virtual void f()
{
cout<<"f() of class A"<<endl;
}
};
class B:public A
{
public:
B()
{
pInt = new int[10];
}
~B()
{
delete[] pInt;
cout<<"virtual function of class B"<<endl;
}
virtual void f()
{
cout<<"f() of class B"<<endl;
}
private:
int *pInt;
};
int main()
{
A *a = new B();
a->f();
delete a;
return 0;
}
执行结果:
f() of class B
virtual function of class A
从结果可以看出问题了吧!
造成的问题:~B没有被执行,pInt所占的内存不能得到释放,造成内存泄漏。
原因:a的声明类型为类A。
解决办法:将~A() 改成 virtual ~A()
更改后的执行结果:
f() of class B
virtual function of class B
virtual function of class A
那什么时候使用虚析构函数呢?
答:当类作为基类出现,同时基类中有虚函数时,最好将基类的析构函数作为虚函数。
虚析构函数和普通虚函数有点还有点不一样:虚析构函数会同时执行父类和子类的虚析构方法,但对普通虚函数,只会执行子类的虚函数。
从老师那里学来的...
相关文章推荐
- 用qsort对字符串数组排序需要注意的几个问题
- C++中的静态对象需要注意的几个问题
- 关于支付宝需要注意的几个问题。
- JavaScript中需要注意的几个问题
- SQL Server 2005 CLR 调用Web Service需要注意的几个问题
- 使用单例模式需要注意的几个问题
- maven项目发布到tomcat以及导包需要注意的几个小问题。
- maven项目发布到tomcat以及导包需要注意的几个小问题。
- jbpm3.1升级到jpbm3.2.2过程中需要注意的几个问题
- 新手选择Linux VPS过程中需要注意的几个问题
- 编写3dmax插件需要注意的几个问题
- spring security 配置 intercept-url 时需要注意的几个问题
- JBoss RMI 远程调用需要注意的几个问题!
- 使用模板模板缓冲时需要注意的几个问题
- 【MS】开发人员需要搞清楚的几个问题
- 网页设计中input标签写CSS时需要注意的几个问题
- 想做成功网站需要注意的几个问题
- 网络爬虫设计中需要注意的几个问题
- 在ssh框架中注解方式需要注意的几个问题
- 【读书笔记】并发编程需要注意的几个典型问题