1.设计接口类: public interface IBase{ void Somefun();}2.设计扩展插件类: class PluginCls:IBase{ public void Somefun() { Console.WriteLine("hello ,i am derived clas...
分类:
其他好文 时间:
2014-08-05 13:45:39
阅读次数:
159
(0)c语言的梦魇:c指针 序 c语言中有一个重点:c指针。它也是一个难点。当然,这是一句废话:重点往往也是难点。在c标准中,对指针的定义是这种:指针的类型是derived from其他类型,也就是说指针的类型是由它指向的类型决定的;指针是一种refe...
分类:
编程语言 时间:
2014-07-27 23:10:49
阅读次数:
237
句柄类存在的意义是为了弥补将派生类对象赋给基类对象时发生的切片效应。例如下面的程序:
multimap basket;
Base base;
Derived derive;
basket.insert(base); //ok,add copy of base;
basket.insert(derive); //ok,but derive sliced down to its base part....
分类:
编程语言 时间:
2014-07-27 11:21:12
阅读次数:
255
转换和继承,虚函数
Understanding conversions between base and derived classes is essential to
understanding how object-oriented programming works in C++.
理解基类和派生类之间的转换是必不可少的 理解面向对象编程在。
Like built-i...
分类:
编程语言 时间:
2014-07-24 10:26:53
阅读次数:
488
Problem Description
In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements. For example, ...
分类:
其他好文 时间:
2014-07-21 11:13:44
阅读次数:
270
经验:private 继承意味 is-implemented-in-terms of。它通常比 composition 的级别低。
但是当 derived class 需要访问 protected base class 的成员,或需要重新定义继承而来的 virtual 函数时,这么设计是合理的
经验:和 composition 不同, private 继承可以造成 empty base 最优化。这对致力于“对象尺寸最小化”的程序库开发者而言,可能很重要
示例1:虽是 Empty class,但却不仅要花...
分类:
编程语言 时间:
2014-07-15 22:41:05
阅读次数:
284
1.virtual 函数版本
class GameCharacter{
public:
virtual int healthValue() const; //返回人物的健康指数, derived classes 可重新定义它
};
2.使用 non-virtual interface 手法,那是 Template Method 设计模式的一种特殊形式。
让客户通过 public non-virtual 成员函数间接调用 private virtual 函数
class GameCharacter{
pu...
分类:
编程语言 时间:
2014-07-15 22:36:18
阅读次数:
364
经验:可在derived class templates 内通过 "this->" 指涉 base class templates 内的成员名称,或藉由一个明白写出的 "base class 资格修饰符"完成。
示例:
class CompanyA{
public:
//...
void sendCleartext(const std::string &msg);
void sendEncrypted(const std::string &msg);
//...
};
class Company...
分类:
编程语言 时间:
2014-07-14 13:20:25
阅读次数:
263
经验:"public继承"意味 is-a。适用于 base classes 身上的每一件事情一定也适用于 derived classes 身上,
因为每一个 derived classes 身上,因为每一个 derived class 对象也都是一个 base class 对象。
示例:
class Person {...};
class Student: public Person {...};
void eat(const Person &p); //任何人都会吃
void study(const ...
分类:
编程语言 时间:
2014-07-12 21:18:25
阅读次数:
230
经验:derived classes 内的名称会遮掩 base classes 内的名称。在 public 继承下从来没有人希望如此。
C++ 的名称遮掩规则所做的唯一事情就是: 遮掩名称
derived class 作用域被嵌套在 base class 作用域里
class Base {
private:
int x;
public:
virtual void mf1() = 0;
virtual void mf1(int);
virtual void mf2();
void mf3();
v...
分类:
编程语言 时间:
2014-07-12 19:05:42
阅读次数:
224