本例子说明以下问题:
虚函数的定义,调用(外部函数的指针或引用,成员函数),构造函数和析构函数中调用虚函数,虚析构函数
赋值兼容,构造函数的重载,构造函数的初始化列表
见代码:
#include
using namespace std;
class Base
{
public:
Base():m(1),n(m+1){Display();} //构造函数中调用虚函数时自己...
分类:
其他好文 时间:
2015-08-19 11:12:45
阅读次数:
106
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:classClxBase{public:ClxBase(){};virtual~ClxBase(){};virtualvoidDoSomething(){coutD...
分类:
编程语言 时间:
2015-08-19 00:17:06
阅读次数:
149
1. 如果一个类将要作为基类,那么它应该具有一个虚析构函数以防止delete经由基类指针指向的派生类对象时发生的"局部销毁"问题,避免造成内存泄露,数据结构败坏,在调试器上浪费时间等问题;任何带有虚函数的类几乎肯定需要一个虚析构函数.2. 在不必需的情况下不应该将成员函数设为虚函数,否则,如果导致一...
分类:
编程语言 时间:
2015-08-18 19:03:16
阅读次数:
146
当指向基类的指针指向新建立的派生类对象而且基类和派生类都调用new向堆申请空间时,必须将基类的析构函数声明为虚函数,从而派生类的析构函数也为虚函数,这样才能在程序结束时自动调用它,从而将派生类对象申请的空间归还给堆。 附上一段代码诠释上述概念:#include #include using n...
分类:
编程语言 时间:
2015-06-12 19:14:35
阅读次数:
164
C++中析构函数可以为纯虚函数吗?众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯虚呢?class CBase
{
public:
CBase()
{
printf("CBase()\n");
}
virtual ~CBase...
分类:
编程语言 时间:
2015-06-08 23:27:17
阅读次数:
361
1 #include 2 3 4 using namespace std; 5 6 class A 7 { 8 public: 9 A() { cout DoSomething();29 cout DoSomething();35 cout DoSomethin...
分类:
其他好文 时间:
2015-06-08 19:30:06
阅读次数:
143
问题及代码:
#include
using namespace std;
class BASE
{
private:
char c;
public:
BASE(char n):c(n) {}
virtual ~BASE() //虚析构函数
{
cout<<c;
}
};
class DERIVED:public BASE
{
pri...
分类:
其他好文 时间:
2015-06-01 20:31:47
阅读次数:
124
#include
using namespace std;
class BASE
{
private:
char c;
public:
BASE(char n):c(n) {}
virtual ~BASE() { cout<<c; }
};
class DERIVED:public BASE
{
private:
char c;
public:
DERIV...
分类:
其他好文 时间:
2015-06-01 18:51:55
阅读次数:
185
1、阅读下面的程序,并写出运行结果
(2)虚析构函数
#include
using namespace std;
class BASE
{
private:
char c;
public:
BASE(char n):c(n) {}
virtual ~BASE() { cout<<c; }
};
class DERIVED:public BASE
...
分类:
编程语言 时间:
2015-05-27 10:04:12
阅读次数:
172