以下关于GOF的一些例子命名不是很准确,但是大概意思差不多,懒得再去翻书了模拟观察者模式模拟中介者模式模拟command模式模拟memento和command模拟观察者模式观察者与职责链模式应该是我们项目中用的最多的了我在之前也写过一篇利用观察者模式对模块进行解耦,当时还是用纯虚函数http://w...
分类:
其他好文 时间:
2015-01-26 20:52:59
阅读次数:
236
本文引自:http://songlee24.github.io/blog/2014/09/02/c-plus-plus-jin-jie-zhi-xu-han-shu-biao/C++通过继承(inheritance)和虚函数(virtual function)来实现多态性。所谓多态,简单地说就是,将...
分类:
编程语言 时间:
2015-01-26 08:52:08
阅读次数:
330
对象的析构函数调用顺序是从派生类到基类
那么如果基类的指针指向派生类的对象 还能正常的执行析构顺序吗
下面看一个类的声明
class Subject
{
public:
~Subject();
Subject();
};
class ConcreteSubject : public Subject
{
public :
ConcreteSubject();
~Conc...
分类:
编程语言 时间:
2015-01-25 16:44:43
阅读次数:
147
Virtual是C++ OO(面向对象机制)机制中很重要的一个关键字。虚函数就是因为成员函数加了关键字virtual,可见它的重要性。 只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟....
分类:
编程语言 时间:
2015-01-24 11:26:51
阅读次数:
117
封装和继承是为了实现代码的重用,而多态是为了实现接口的重用。sizeof(class)对类sizeof是求类成员对其之后加虚函数表头之和若是继承类虚函数只做一张表 也就是只有一个表头操作符重载代码示例#includeusing namespace std;class Point { private....
分类:
编程语言 时间:
2015-01-23 10:55:04
阅读次数:
314
抽象类是为了抽象和设计的目的而建立的,处于继承层次结构的上层。具体类是能够建立对象的类。(1)抽象类只能用作其他类的基类,不能建立抽象类对象。(2)抽象类不能用作参数类型、函数返回类型或显式转换的类型。(3)可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态纯虚函数是被标明为不具...
分类:
编程语言 时间:
2015-01-20 21:56:33
阅读次数:
233
转自鱼C论坛1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4...
分类:
编程语言 时间:
2015-01-20 17:21:41
阅读次数:
205
dynamic 转换时的类必须有虚函数,否则会编译报错。#include using namespace std;class A{public: int a ; int b; void prt(void){std::cout (pA); cout (rA); cou...
分类:
其他好文 时间:
2015-01-20 15:12:05
阅读次数:
127
在大型项目中,很容易出现版本不匹配的问题,其中导致的虚函数飘移的问题比较难解决。
在这里,用一个例子来说明如何解决这种问题。
建立三个源文件:testso.h,testso.cpp,xuzhina_dump_c6_s3_ex.cpp。
testso.h的代码如下:
1 #ifndef __TESTSO_H__
2 #define __TESTSO_H__
3
4...
分类:
系统相关 时间:
2015-01-19 00:14:28
阅读次数:
380
在上一节已经探究了类的成员变量的排列,现在看一下虚函数表和成员变量的排列及虚函数之间的排列.
先看一个例子:
1 #include
2 class xuzhina_dump_c06_s3
3 {
4 private:
5 int m_a;
6 public:
7 xuzhina_dump_c06_s3(...
分类:
系统相关 时间:
2015-01-14 21:27:26
阅读次数:
273