我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类: class ClxBase
{
public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomet...
分类:
编程语言 时间:
2014-09-23 21:07:15
阅读次数:
186
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:classClxBase{public:ClxBase(){};virtual~ClxBase(){};virtualvoidDoSomething(){coutD...
分类:
编程语言 时间:
2014-09-04 16:39:49
阅读次数:
140
转载:http://blog.chinaunix.net/uid-25544300-id-3236826.html部分修改,感谢博主!在 某些类里声明纯虚析构函数很方便。纯虚函数将产生抽象类——不能实例化的类(即不能创建此类型的对象)。有些时候,你想使一个类成为抽象类,但刚好又没有 任何纯虚函数。怎...
分类:
其他好文 时间:
2014-08-27 15:57:47
阅读次数:
218
1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配。重载函数使用静态联编。
2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编。switch语句和if语句是动态联编的例子。
#include
void go(int num)
{
}
void go(char *str)
{
}
//class
//::在一个类中
class A
{
public:
voi...
分类:
其他好文 时间:
2014-08-27 14:48:28
阅读次数:
212
前言 在使用 C++ 实现多态的时候,有一点一定要清楚:当派生类对象经由基类指针被删除,而此基类的析构函数没有被声明为虚函数的话,那么析构函数只会释放基类部分的成员而无视派生类成员。 如果不对这一点加以防范,那么很多时候,会带来内存泄露这样灾难性的后果。解决之道 1. 对于要拿来实现多态的基类...
分类:
其他好文 时间:
2014-08-24 16:34:32
阅读次数:
135
Typedefint(*healthcalcfunc)(constgamecharacter&)当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此,在子类从新声明该虚函数时,可以加,也可以不加,但习惯上每一层声明函数时都加virtual,使程序更加清晰。友元函数构造函数sta...
分类:
其他好文 时间:
2014-08-20 19:30:42
阅读次数:
210
首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数,只有这样子类才能在构造函数里使用基类的成员,所以是创建子类时先调用基类的构造函数然后再调用自己的构造函数。通俗点说,你要用某些物品,但这些物品你没办法自己生产,自然就要等别人生产出来,你才能拿来用。
...
分类:
编程语言 时间:
2014-08-09 11:46:57
阅读次数:
234
C++中的虚析构函数到底什么时候有用的,什么作用呢。总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的。两段代码:#include using na...
分类:
编程语言 时间:
2014-07-29 12:23:26
阅读次数:
289
写在前面用自己的话分析清楚~智能指针是如何使用的?强指针是如何实现?弱指针如何转化为强指针?智能指针的使用智能指针的使用必须满足如下条件:这个类需要继承自RefBase为什么需要虚析构函数?虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。虚函数的出现是为了...
分类:
其他好文 时间:
2014-07-22 22:46:36
阅读次数:
446
为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针。也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) 1 #include 2 using namespace std; 3 4 class base{ 5 public: 6 /*virtual*/ ...
分类:
其他好文 时间:
2014-07-17 18:04:41
阅读次数:
300