随笔分类 -  C++ OO研究

摘要:MFC中的消息机制没有采用C++中的虚函数机制,原因是消息太多,虚函数内存开销太大。在Qt中也没有采用C++中的虚函数机制,原因与此相同,其实这里还有更深层次上的原因,大体说来,多态的底层实现机制只有两种:1. 一种是按照名称查表2. 一种是按照位置查表两种方式各有利弊,而C++的虚函数机制无条件的... 阅读全文
posted @ 2014-10-13 03:27 findumars 阅读(1767) 评论(0) 推荐(0)
摘要:一般书上总是用int来举例,那个太简单。如果静态变量本身可否是一个实例对象呢?应该是可以,但是这样涉及到它的构造函数以及它内部的静态变量如何初始化两个问题,换而言之,这个静态变量本身应该如何初始化?这个问题和单例模式有些关系,回头查查。以下是一个不成熟的例子,但是能编译运行通过。#include "... 阅读全文
posted @ 2014-10-06 23:30 findumars 阅读(1012) 评论(0) 推荐(0)
摘要:探索C++的底层机制 在看这篇文章之前,请你先要明白一点:那就是c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制,也就是说是编译器确保了你在完成任务之前的正确行为,如果你的行为不正确,那么你休想构造出任何可执行程序来。但如果真正到了产生可执行代码阶段,无论是c,c++,还是pascal, 阅读全文
posted @ 2014-05-05 23:26 findumars 阅读(787) 评论(0) 推荐(0)
摘要:摘自C++编程思想:------------------------------ 继承与组合:接口的重用 -------------------------------继承和组合都允许由已存在的类型创建新类型,两者都是在新类型中嵌入已存在的类型的子对象。然而,当我们想重用原类型作为新类型的内部实现的... 阅读全文
posted @ 2014-04-27 23:21 findumars 阅读(296) 评论(0) 推荐(0)
摘要://: ORDER.CPP -- Order of constructor calls // with inheritance#include #define inherit(derived, base) \class derived : public base { \public: \ deri... 阅读全文
posted @ 2014-04-27 21:32 findumars 阅读(327) 评论(0) 推荐(0)
摘要:#include class base {public: virtual void v() const = 0; virtual void f() const = 0 { // 纯虚函数也有实现内容,但子类仍然必须实现这个虚函数 cout << "base::f()\n"; }};voi... 阅读全文
posted @ 2014-04-27 21:25 findumars 阅读(429) 评论(0) 推荐(0)
摘要://: WIND2.CPP -- Inheritance & upcasting#include enum note { middleC, Csharp, Cflat }; // Etc.class instrument {public: void play(note) const { // ... 阅读全文
posted @ 2014-04-27 20:57 findumars 阅读(509) 评论(0) 推荐(0)
摘要:#include "stdafx.h"class A {public:int i;A() { i=1; }};class B: public A {public:int i;B() { i=2; }};class C: public B {public:int i;C() { i=3; }};int... 阅读全文
posted @ 2014-04-25 05:38 findumars 阅读(488) 评论(0) 推荐(0)
摘要:class A {public: A() { init(); } virtual void init() { printf("A::init\n"); }};class B : public A {public: B() { init(); } virtual void init() { print... 阅读全文
posted @ 2013-10-16 04:54 findumars 阅读(384) 评论(0) 推荐(1)
摘要:例子1:属性的覆盖#include "stdafx.h"class A {public: int i; A() { i=1; }};class B: public A {public: int i; B() { i=2; }};class C: public B {public: int i; C(... 阅读全文
posted @ 2013-09-03 06:16 findumars 阅读(1807) 评论(0) 推荐(0)
摘要:对于protected提供的函数和属性,除非想扩充这个类的功能,否则是完全用不到的。外部函数main()永远只能调用public的那些函数。所以从拖拉控件编程的角度来讲,只需要学习public的函数和属性就行了。 阅读全文
posted @ 2013-06-24 22:33 findumars 阅读(661) 评论(0) 推荐(0)
摘要:#include "stdafx.h"#include using namespace std;class shape{public: shape(){}; void draw() { coutdraw(); s = new round(); s-... 阅读全文
posted @ 2013-05-09 22:47 findumars 阅读(275) 评论(0) 推荐(0)
摘要:C++空类实例大小不是0原因初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟... 阅读全文
posted @ 2013-05-06 22:03 findumars 阅读(371) 评论(0) 推荐(0)
摘要:C++ 多态必须使用指针或者引用,直接传对象就变成切片。虚函数的魔力只对指针和引用有效。按值传递对象不允许调用虚函数。#include #include #include using namespace std; class base {public: virtual void print()... 阅读全文
posted @ 2013-05-06 21:55 findumars 阅读(603) 评论(0) 推荐(0)
摘要:C++编程思想,第十八章《RTTI运行时类型识别》(加了一些少量自己的话,应该不会误导大家,另外翻译版本比较罗嗦,把做了适当精简)RTTI是我们只有一个指向基类的指针或者引用的时候,确定一个对象的准确类型。这是C++的第二大特征。编程时候遇到了特殊的问题,而我们只要知道了一个一般指针的准确类型它就会... 阅读全文
posted @ 2012-04-08 19:46 findumars 阅读(2128) 评论(0) 推荐(0)
摘要:在看完了《让你不再害怕指针.pdf》这本29页的书以后,感觉自己对指针的各种使用方法都会了(指针表达式那一块没仔细看,因为平时用不到这么复杂的情况)。但是忽然想起来,以前看MSDN的时候碰到双重指针就不理解,然而这本书却没有细讲,于是又搜了一些网上关于指针的文章看,竟然发现有些内容还是不太懂。于是忽 阅读全文
posted @ 2011-10-21 05:38 findumars 阅读(3970) 评论(0) 推荐(1)