C++中Virtual的作用
来源:互联网 发布:批量写淘宝宝贝卖点 编辑:程序博客网 时间:2024/05/22 11:07
1、virtual析构函数的作用
当定义了一个基类,并用来继承的。当其他类用到基类,其析构函数必须是虚函数,不然在调用基类析构函数的时候,不会去调用子类的析构函数,从而会造成内存泄漏。
class A
{
public:
A() { ptra_ = new char[10];}
~A() { delete[] ptra_;} // 非虚析构函数
private:
char * ptra_;
};
class B: public A
{
public:
B() { ptrb_ = new char[20];}
~B() { delete[] ptrb_;}
private:
char * ptrb_;
};
void foo()
{
A * a = new B;
delete a;
}
例子中在执行delete a的时候,实际上只调用了~A(),并没有对B类的析构函数进行调用。
2、virtual继承作用
当基类的函数为虚函数的时候,可以通过基类去访问子类的函数。
class A
{
public:
void print()
{
cout << “A()” << endl;
}
};
class B : public A
{
public:
virtual void print()
{
cout << “B()” << endl;
}
};
class C : public B
{
public:
virtual void print()
{
cout << “C()” << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A* ap;
B* bp;
B b;
C c;
ap = &b; ap->print(); ap = &c; ap->print(); bp = &c; bp->print(); return 0;
}
输出结果为:A() A() C()
- C++中virtual的作用
- C++中Virtual的作用
- [MVC] model类中Virtual的作用
- Virtual-template的作用
- c++ virtual的作用
- virtual关键字的作用
- c#中override virtual static abstract sealed 的作用
- c#中override virtual static abstract sealed 的作用
- Virtual Index的测试作用
- virtual虚函数的作用
- c中static的作用
- c中static的作用
- c 中static的作用
- C中static的作用
- C中static的作用
- c中static的作用
- C中static的作用
- C语言中#、##的作用
- 商业数据挖掘的应用场景和主题
- 论文阅读:Dual Learning for Machine Translation
- 今天开始保证每周一篇博客
- 操作系统概论整理一
- JQUERY的DOM操作大全
- C++中Virtual的作用
- POJ 1703 Find them, Catch them
- 四、设计模式之三-----原型模式
- Ubuntu升级GCC版本
- HTTP错误汇总(404、302、200……)
- 关于卷积神网络(一)
- HTML背景颜色及透明度设置
- LINUX下常用GREP命令
- java 返回callback不同处理方法