接口继承和实现继承不同。在 public 继承下, derived classes 总是继承 base class 的接口
class Shape{
public:
virtual void draw() const = 0;
virtual void error(const std::string &msg);
int objectID() const;
//...
};
class Rectangle: public Shape{...};
class Ellipse: public Sha...
分类:
编程语言 时间:
2014-07-12 23:42:27
阅读次数:
251
首先,看下面的代码的输出时什么:
上述代码做了最理所当然的事,就是将Derived的两个对象进行了交换。但是通过指针进行的赋值输出却不是预期的:
竟然调用的是Base的operator=,也就意味着我们把d2的Base部分赋值给了d1,而现在的d1就是
“一般是自己的derived,一半是d2的Base”的怪物啦!!!
看来编译器没有理会我们的意图,...
分类:
其他好文 时间:
2014-07-09 12:23:19
阅读次数:
194
class X{};class Y :public virtual X{};class Z :public virtual X{};class A :public Y, public Z{};void main(){ cout x=0;当Point3D是一个derived class,而在其继...
分类:
编程语言 时间:
2014-07-06 15:28:39
阅读次数:
241
由于重新定义继承而来的non-virtual函数是不正确的(见上一个条款),所以这个条款就将问题局限于:绝不重新定义继承一个带有缺省参数值的virtual函数。
(一)
virtual函数是动态绑定的,而缺省参数却是静态绑定。
对象的所谓静态类型,是它在程序中被声明时所采用的类型。
你可能会在“调用一个定义于derived
class 内的virtual函数”的同时,却使用了ba...
分类:
编程语言 时间:
2014-07-04 08:23:12
阅读次数:
412
这似乎很明显。如果base class的destructor不是virtual,当其derived class作为基类使用,析构的时候derived class的数据成员将不会被销毁。举个例子 我们有个交通工具的类作为基类, 它的析构函数不是virtualclass transportTool{ ....
分类:
编程语言 时间:
2014-07-01 10:27:30
阅读次数:
192
看下面的这段代码,问 print调用的是基类还是派生类的版本?
{CSDN:CODE:410156}
答案是 基类。。。
可能大家会很惊讶,print不是virtual function 吗?为什么不是调用派生类的版本呢?
首先,当定义一个派生类的对象的时候,由于 base class 构造函数的执行更早于 derived class
构造函数,所以当 base cl...
分类:
其他好文 时间:
2014-06-30 00:48:35
阅读次数:
267
1、首先列出代码
Base.java
public class Base
{
Base() {
preProcess();
}
void preProcess() {}
}
Derived.java
public class Derived extends Base
{
public String whenAmIS...
分类:
编程语言 时间:
2014-06-26 13:14:44
阅读次数:
196
首先,此处的函数指的是 virtual 函数,为什么不是non-virtual函数呢?是因为在public继承中,non-virtual函数表示派生类是需要继承其接口与其强制实现的。如果你的Derived已经在考虑重写non-virtual函数了,那么你是应该好好审视一下,在此处使用 public继承是否合理了。
因此,本文只讲解virtual函数的缺省参数值,例如下面的代码:
{CSDN...
分类:
其他好文 时间:
2014-06-25 07:33:08
阅读次数:
185
三.虚析构#include using namespace std;class Base{public: virtual ~Base(){ cout<<"Base destructor\n"; }};class Derived:public Base{public: Derived(){...
分类:
其他好文 时间:
2014-06-21 08:53:46
阅读次数:
182
请注意:在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class。
分类:
编程语言 时间:
2014-06-16 13:42:35
阅读次数:
349