随笔分类 - C++ OO研究
摘要:一般书上总是用int来举例,那个太简单。如果静态变量本身可否是一个实例对象呢?应该是可以,但是这样涉及到它的构造函数以及它内部的静态变量如何初始化两个问题,换而言之,这个静态变量本身应该如何初始化?这个问题和单例模式有些关系,回头查查。以下是一个不成熟的例子,但是能编译运行通过。#include "...
阅读全文
摘要:摘自C++编程思想:------------------------------ 继承与组合:接口的重用 -------------------------------继承和组合都允许由已存在的类型创建新类型,两者都是在新类型中嵌入已存在的类型的子对象。然而,当我们想重用原类型作为新类型的内部实现的...
阅读全文
摘要://: ORDER.CPP -- Order of constructor calls // with inheritance#include #define inherit(derived, base) \class derived : public base { \public: \ deri...
阅读全文
摘要:#include class base {public: virtual void v() const = 0; virtual void f() const = 0 { // 纯虚函数也有实现内容,但子类仍然必须实现这个虚函数 cout << "base::f()\n"; }};voi...
阅读全文
摘要://: WIND2.CPP -- Inheritance & upcasting#include enum note { middleC, Csharp, Cflat }; // Etc.class instrument {public: void play(note) const { // ...
阅读全文
摘要:#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...
阅读全文
摘要:class A {public: A() { init(); } virtual void init() { printf("A::init\n"); }};class B : public A {public: B() { init(); } virtual void init() { print...
阅读全文
摘要:例子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(...
阅读全文
摘要:对于protected提供的函数和属性,除非想扩充这个类的功能,否则是完全用不到的。外部函数main()永远只能调用public的那些函数。所以从拖拉控件编程的角度来讲,只需要学习public的函数和属性就行了。
阅读全文
摘要:#include "stdafx.h"#include using namespace std;class shape{public: shape(){}; void draw() { coutdraw(); s = new round(); s-...
阅读全文
摘要:C++空类实例大小不是0原因初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟...
阅读全文
摘要:C++ 多态必须使用指针或者引用,直接传对象就变成切片。虚函数的魔力只对指针和引用有效。按值传递对象不允许调用虚函数。#include #include #include using namespace std; class base {public: virtual void print()...
阅读全文
摘要:C++编程思想,第十八章《RTTI运行时类型识别》(加了一些少量自己的话,应该不会误导大家,另外翻译版本比较罗嗦,把做了适当精简)RTTI是我们只有一个指向基类的指针或者引用的时候,确定一个对象的准确类型。这是C++的第二大特征。编程时候遇到了特殊的问题,而我们只要知道了一个一般指针的准确类型它就会...
阅读全文