mirror of
https://github.com/CnTransGroup/EffectiveModernCppChinese.git
synced 2025-03-24 08:10:19 +08:00
Update item17.md
This commit is contained in:
parent
0c413c0072
commit
8625115eb1
@ -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将会详细讨论它可能带来的后果。
|
||||
|
||||
**记住**:
|
||||
+ 特殊成员函数是编译器可能自动生成的函数:默认构造,析构,拷贝操作,移动操作。
|
||||
|
Loading…
Reference in New Issue
Block a user