mirror of
https://github.com/Estom/notes.git
synced 2026-05-16 14:13:20 +08:00
设计模式完成
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
默认构造(无参) T()
|
||||
|
||||
拷贝构造 T(const T& )
|
||||
移动构造 T()
|
||||
移动构造 T(T&&)
|
||||
|
||||
拷贝赋值 T& operator=(T& )
|
||||
移动赋值 T& operator=(T&& )
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
## 1 继承
|
||||
|
||||
### 定义基类
|
||||
```
|
||||
```c++
|
||||
class Quote{
|
||||
public:
|
||||
Quote() = default;
|
||||
@@ -21,7 +21,7 @@ protected:
|
||||
};
|
||||
```
|
||||
### 定义派生类
|
||||
```
|
||||
```c++
|
||||
class Bulk_quote:public Quote{
|
||||
public:
|
||||
Bulk_quote()=default;
|
||||
@@ -93,7 +93,7 @@ protected:
|
||||
|
||||
### 编译时名字查找
|
||||
|
||||
* 引用或指针的静态类型决定了该对象有哪些成员是可见的。一个基类的引用和指针只能访问基类的成员。即是动态对象是其派生类。
|
||||
* 引用或指针的静态类型决定了该对象有哪些成员是可见的。一个基类的引用和指针只能访问基类的成员。即使动态对象是其派生类。
|
||||
|
||||
### 名字冲突与继承
|
||||
* 派生了重用定义在直接基类或间接基类中的名字,会屏蔽定义在外层作用域基类中的名字
|
||||
|
||||
@@ -66,7 +66,7 @@ int main(){
|
||||
```
|
||||
### 实现条件
|
||||
运行时多态的条件:
|
||||
* 必须是j继承关系
|
||||
* 必须是继承关系
|
||||
* 基类中必须包含虚函数,并且派生类中一定要对基类中的虚函数进行重写。
|
||||
* 通过基类对象的指针或者引用调用虚函数。
|
||||
|
||||
@@ -96,7 +96,7 @@ public:
|
||||
|
||||
### 虚函数的原理
|
||||
* 除了构造函数的非静态函数都可以是虚函数。
|
||||
* 关键字virtual智能出现在类内部的声明语句之前。不能出现在类外部的函数定义。
|
||||
* 关键字virtual只能出现在类内部的声明语句之前。不能出现在类外部的函数定义。
|
||||
* 如果把一个函数声明成虚函数,则该函数在派生类中也是隐式的虚函数。(即派生类的派生类,也需要重写次函数)
|
||||
* 派生类可以不用重写虚函数。
|
||||
* 派生类可以在它重写的虚函数前使用**virtual关键字**
|
||||
|
||||
@@ -21,8 +21,8 @@ int main()
|
||||
int s1[]={1,2,3,4,5,6,7,8};
|
||||
int s2[3]={4,5,6};
|
||||
int* s3 = new int(999);
|
||||
test1(s3);
|
||||
test2(s3);
|
||||
test3(s3);
|
||||
test1(s1);
|
||||
test2(s1);
|
||||
test3(s1);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user