
C++沉思录
云敛容
c/c++/MFC/Qt/Objective-c/java/c#/.NET/java/javaWeb/
展开
-
《C++沉思录》-第四章-类设计者的核查表
设计一个类的时候,需要考虑的问题:1、你的类需要一个构造函数吗?可能需要一个构造函数来隐藏内部工作方式。2、你的数据成员是私有的吗?保证数据的实时性,有效性。比如长度,如果是共有的,被修改了,就不能正确的表达原先所谓的“长度”。3、你的类需要一个无参构造函数吗?没有的话,等于禁止了对象数组。class Point{public: Po原创 2013-12-07 21:40:32 · 1091 阅读 · 0 评论 -
《C++沉思录》-第六章-句柄:第一部分
第五章介绍的代理将会复制所代理的对象,就像复制代理一样。句柄允许保持代理的多态行为的同时,还可以避免进行不必要的复制。句柄类(handle class)也称为 智能指针(smart pointer)。一个简单的类:class Point{public: Point():m_x(0),m_y(0){} Point(int x,int y):m_x(x),m_y(y){原创 2013-12-08 19:10:04 · 865 阅读 · 0 评论 -
《C++沉思录》-第五章-代理类
所谓代理类,即surrogate.为什么要使用它呢,简单的举个例子. 1 class Vehicle 2 { 3 public: 4 Vehicle(){} 5 virtual string getName()= 0; 6 }: 7 8 class Car : public Vehicle 9 {10 public:11 Car(){}12 virtual转载 2013-12-08 15:18:08 · 1323 阅读 · 0 评论 -
《C++沉思录》-第七章-句柄:第二部分
第六章谈及一种向类中添加句柄和引用计数的技术,以能够通过值控制引用计数就能够高效地“复制”该类的对象。这种技术有一个明显的缺点:为了把句柄绑定到类T的对象上,必须定义一个具有类型T的成员的新类。分离引用计数:class Handle{public: Handle(): u(new int(1)), p(new Point) {} Handle(int x原创 2013-12-08 22:53:32 · 811 阅读 · 0 评论 -
《C++沉思录》-第八章- 一个面向对象程序范例
node.h#ifndef NODE_H#define NODE_H#include "expr.h"#include #include using namespace std;class Expr_node{public: Expr_node(): use(1) {} virtual ~Expr_node() {} virtual void原创 2013-12-10 13:56:31 · 1039 阅读 · 0 评论 -
《C++沉思录》-第十章- 一个课堂练习的分析(下)
第九章中最大的弊端,在于图像对象一旦生成,其结构信息立刻就会丢掉。那我们该怎么做?第一个结论:可以存储几种不同的图像。第二个结论:不必复制图像内容。为了能使用继承来区分和组织各种图像,显然要用指针。并且我们需要想办法隐藏其中实现细节。正如第八章,我们需要一个Handle类,且称之为Picture,我们用它来隐藏根据所建立的图像结构而设计的派生层次。一旦我们有了Handl原创 2013-12-11 21:17:40 · 1529 阅读 · 2 评论 -
《C++沉思录》-第十一章-什么时候不应该使用虚函数
一、虚函数不总是适用的原因:1、虚函数有时会带来很大的消耗;2、虚函数不总是提供所需的行为;3、有时候,我们写一个类时,可以不想考虑派生类问题。一种必须使用虚函数的情况:当你想要删除一个表面上指向基类对象、实际却是指向派生类对象的指针,就需要虚析构函数原创 2013-12-11 21:20:19 · 828 阅读 · 0 评论 -
《C++沉思录》-第九章-- 一个课堂练习的分析(上)
picture.h#ifndef PICTURE_H#define PICTURE_H#includeusing namespace std;class Picture{public: Picture(); Picture(const char* const*, int); Picture(const Picture&); Picture& op原创 2013-12-10 19:30:59 · 1035 阅读 · 0 评论 -
《C++沉思录》-第十二章- 设计容器类
设计一个类似数组的类:customarray.h#ifndef CUSTOMARRAY_H#define CUSTOMARRAY_Htemplateclass CustomArray{public: CustomArray(): m_data(0), m_size(0) {} CustomArray(unsigned size): m_size(size),原创 2013-12-11 21:35:02 · 1055 阅读 · 0 评论