添加单例模式,改正类后面的逗号

This commit is contained in:
huihut 2018-03-21 17:00:04 +08:00
parent e63a7d0af7
commit d8c51db31c

View File

@ -415,7 +415,7 @@ class A
public: public:
void do(int a); void do(int a);
void do(int a, int b); void do(int a, int b);
} };
``` ```
#### 动态多态(晚绑定) #### 动态多态(晚绑定)
@ -437,19 +437,19 @@ public:
{ {
... ...
} }
} };
class Circle : public Shape //圆形类 class Circle : public Shape //圆形类
{ {
public: public:
virtual double calcArea(); virtual double calcArea();
... ...
} };
class Rect : public Shape //矩形类 class Rect : public Shape //矩形类
{ {
public: public:
virtual double calcArea(); virtual double calcArea();
... ...
} };
int main() int main()
{ {
Shape * shape1 = new Circle(4.0); Shape * shape1 = new Circle(4.0);
@ -469,13 +469,13 @@ public:
Shape(); //构造函数不能是虚函数 Shape(); //构造函数不能是虚函数
virtual double calcArea(); virtual double calcArea();
virtual ~Shape(); //虚析构函数 virtual ~Shape(); //虚析构函数
} };
class Circle : public Shape //圆形类 class Circle : public Shape //圆形类
{ {
public: public:
virtual double calcArea(); virtual double calcArea();
... ...
} };
int main() int main()
{ {
Shape * shape1 = new Circle(4.0); Shape * shape1 = new Circle(4.0);
@ -581,21 +581,21 @@ class Flyable //【能飞的】
public: public:
virtual void takeoff() = 0; // 起飞 virtual void takeoff() = 0; // 起飞
virtual void land() = 0; // 降落 virtual void land() = 0; // 降落
} };
class Bird : public Flyable //【鸟】 class Bird : public Flyable //【鸟】
{ {
public: public:
void foraging() {...} // 觅食 void foraging() {...} // 觅食
virtual void takeoff() {...} virtual void takeoff() {...}
virtual void land() {...} virtual void land() {...}
} };
class Plane : public Flyable //【飞机】 class Plane : public Flyable //【飞机】
{ {
public: public:
void carry() {...} // 运输 void carry() {...} // 运输
virtual void take off() {...} virtual void take off() {...}
virtual void land() {...} virtual void land() {...}
} };
class type_info class type_info
{ {
@ -607,7 +607,7 @@ public:
virtual ~type_info(); virtual ~type_info();
private: private:
... ...
} };
class doSomething(Flyable *obj) //【做些事情】 class doSomething(Flyable *obj) //【做些事情】
{ {
@ -622,7 +622,7 @@ class doSomething(Flyable *obj) //【做些事情】
} }
obj->land(); obj->land();
} };
``` ```
dynamic\_cast 注意事项: dynamic\_cast 注意事项:
@ -1444,6 +1444,26 @@ ssize_t write(int fd, const void *buf, size_t count);
## 设计模式 ## 设计模式
### 单例模式
```cpp
class CSingleton
{
private:
CSingleton()
{
}
static CSingleton *m_pInstance;
public:
static CSingleton * GetInstance()
{
if(m_pInstance == nullptr)
m_pInstance = new CSingleton();
return m_pInstance;
}
};
```
## 链接装载库 ## 链接装载库
### 内存、栈、堆 ### 内存、栈、堆