Update item17.md

This commit is contained in:
bz521 2021-01-07 13:26:44 -08:00 committed by GitHub
parent 0c413c0072
commit 8625115eb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,4 @@
## Ite 17:理解特殊成员函数的生成
## Item 17:理解特殊成员函数的生成
条款 17:理解特殊成员函数函数的生成
在C++术语中特殊成员函数是指C++自己生成的函数。C++98有四个默认构造函数函数析构函数拷贝构造函数拷贝赋值运算符。这些函数仅在需要的时候才生成比如某个代码使用它们但是它们没有在类中声明。默认构造函数仅在类完全没有构造函数的时候才生成。防止编译器为某个类生成构造函数但是你希望那个构造函数有参数生成的特殊成员函数是隐式public且inline除非该类是继承自某个具有虚函数的类否则生成的析构函数是非虚的。
@ -112,7 +112,7 @@ class Widget {
Widget& operator=(const T& rhs); ...
};
```
编译器仍会生成移动和拷贝操作假设正常生成它们的条件满足即使可以模板实例化产出拷贝构造和拷贝赋值运算符的函数签名。当T为Widget时。很可能你会决定这是一个不值得承认的边缘情况但是我提到它是有道理的Item16将会详细讨论它可能带来的后果。
编译器仍会生成移动和拷贝操作假设正常生成它们的条件满足即使可以模板实例化产出拷贝构造和拷贝赋值运算符的函数签名。当T为Widget时。很可能你会决定这是一个不值得承认的边缘情况但是我提到它是有道理的Item26将会详细讨论它可能带来的后果。
**记住**
+ 特殊成员函数是编译器可能自动生成的函数:默认构造,析构,拷贝操作,移动操作。