From 0bc5ef3b26bffbb2eeb1a03ae7dd0204314d2175 Mon Sep 17 00:00:00 2001 From: johnwdjiang Date: Fri, 30 Oct 2020 11:47:34 +0800 Subject: [PATCH] fix --- 3.MovingToModernCpp/item17.md | 2 +- 3.MovingToModernCpp/item7.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/3.MovingToModernCpp/item17.md b/3.MovingToModernCpp/item17.md index 07ab6c6..9a9a49f 100644 --- a/3.MovingToModernCpp/item17.md +++ b/3.MovingToModernCpp/item17.md @@ -1,4 +1,4 @@ -## Ite 17:理解特殊成员函数函数的生成 +## Ite 17:理解特殊成员函数的生成 条款 17:理解特殊成员函数函数的生成 在C++术语中,特殊成员函数是指C++自己生成的函数。C++98有四个:默认构造函数函数,析构函数,拷贝构造函数,拷贝赋值运算符。这些函数仅在需要的时候才生成,比如某个代码使用它们但是它们没有在类中声明。默认构造函数仅在类完全没有构造函数的时候才生成。(防止编译器为某个类生成构造函数,但是你希望那个构造函数有参数)生成的特殊成员函数是隐式public且inline,除非该类是继承自某个具有虚函数的类,否则生成的析构函数是非虚的。 diff --git a/3.MovingToModernCpp/item7.md b/3.MovingToModernCpp/item7.md index 26e686b..37c66c0 100644 --- a/3.MovingToModernCpp/item7.md +++ b/3.MovingToModernCpp/item7.md @@ -6,8 +6,8 @@ 应该在创建对象时用{}而不是()吗?为什么alias声明比typedef好?constexpr和const有什么不同?常量成员函数和线程安全有什么关系?这个列表越列越多。 这章将会逐个回答这些问题。 -## Item 5:Distinguish between () and {} when creating objects -条款五:区别使用()和{}创建对象 +## Item 7:Distinguish between () and {} when creating objects +条款七:区别使用()和{}创建对象 从不同的角度看,C++11初始化对象的语法选择既丰富得让人尴尬又混乱得让人糊涂。一般来说,初始化值要用()或者{}括起来或者放到"="的右边: ````cpp @@ -159,7 +159,7 @@ public: … }; Widget w{10, 5.0}; //错误!要求变窄转换 -```` +```` 这里,编译器会直接忽略前面两个构造函数,然后尝试调用第三个构造函数,也即是std::initializer_list构造函数。 调用这个函数将会把`int(10)`和double(5.0)`转换为bool,由于括号初始化拒绝变窄转换,所以这个调用无效,代码无法通过编译。