##**问题起源**先看下面很简单的一小段程序。```cpp`#include ```````cpptemplate struct Base { void fun() { std::cout struct Derived : Base{ void gun() { ...
分类:
其他好文 时间:
2014-06-19 06:11:12
阅读次数:
244
定义为 virtual的 函数是基类期待派生类(derived class)重定义的,
基类期待 派生类继承的函数不能定义为虚函数。动态绑定:程序能 使用继承层次中任意类型的对象,无需关心对象的具体类型。
使用这些类的程序无须区分函数在基类还是在继承类中定义的。尽管不是必须,派生类一般会重定义基类中...
分类:
其他好文 时间:
2014-06-12 23:23:06
阅读次数:
518
Use Private Members from Base Class in Derived
Class
分类:
其他好文 时间:
2014-06-02 01:41:40
阅读次数:
244
经验:在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层)。
让derived class将必要的构造信息向上传递至baseclass构造函数...
分类:
编程语言 时间:
2014-05-25 09:52:25
阅读次数:
237
【1】Virtual是C++
OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如下面例子中的函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向...
分类:
编程语言 时间:
2014-05-14 02:11:02
阅读次数:
352
在引入模板之后,我们面临一个新的问题,那就是如果继承自一个模板基类,是否跟继承一般的类有什么区别呢?
就是说,如果一个类继承自某个模板类,那么该类应该注意一些什么呢?其实,它与一般类的继承是很不一样的。
先举个简单的例子:
{CSDN:CODE:324194}
我们可以看到,在上述代码中,Derived类中的成员函数调用了Base类的成员函数,显然这是很合理的,...
分类:
编程语言 时间:
2014-05-05 21:28:09
阅读次数:
438
private继承,在看到effective C++之前,我发现在我之前的代码里面,没有用到这个机制,但是认真回想起还是有一些影子。
大多数人认为private继承是没有用的,其实不然,在某些情况下,它也会带给你一些惊喜。
好,言归正传,之前已经数次提到过 public继承表示的是 “is a ”的关系,也就是说每一个derived对象D同时也是base对象,任何在
base对...
分类:
其他好文 时间:
2014-05-02 18:36:10
阅读次数:
376
首先,做一个最简单的实验,在电脑上运行下面的代码,将会产生运行错误,这或许会使你百思不得其解:
#include
using namespace std;
class Base
{
private:
int a;
public:
~Base(){cout << "Base dtor..." << endl;}
};
class Derived : public Base
{...
分类:
其他好文 时间:
2014-04-29 13:48:21
阅读次数:
357
C++ 中构造函数可否是虚函数?
绝不要!!
而且,在构造函数中调用虚函数也是不提倡的行为,因为会引发预想不到的结果。
因为,在 derived class 对象构造的过程中,首先调用的是基类的构造函数,等基类构造结束,才开始构造派生类的部分。
这个过程中,编译器将该对象视为 基类,而非派生类(因为,派生类对象的专属部分还未初始化!!!)
所以,如果在构造函数中调...
分类:
编程语言 时间:
2014-04-29 13:47:22
阅读次数:
258
//: ORDER.CPP -- Order of constructor calls // with
inheritance#include #define inherit(derived, base) \class derived : public base
{ \public: \ deri....
分类:
其他好文 时间:
2014-04-28 00:09:24
阅读次数:
444