From 561c22817433393cace1ce6c2b251f7395ee77c5 Mon Sep 17 00:00:00 2001 From: chiry163 <57665138+chiry163@users.noreply.github.com> Date: Sat, 20 Aug 2022 21:17:45 +0800 Subject: [PATCH] Update ch12.md --- excersize/ch12.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/excersize/ch12.md b/excersize/ch12.md index f074dcd..56b6d5f 100644 --- a/excersize/ch12.md +++ b/excersize/ch12.md @@ -120,6 +120,7 @@ int main() 解: 构造函数不是 `explicit` 的,意味着可以从 `initializer_list` 隐式转换为 `StrBlob`。在 `StrBlob` 对象中,只有一个数据成员 `data`,而 `StrBlob` 对象本身的含义,也是一个**管理字符串的序列**。因此,从 `initializer_list` 到 `StrBlob` 的转换,在逻辑上是可行的。而这个设计策略的缺点,可能在某些地方我们确实需要 `initializer_list`,而编译器仍会将之转换为 `StrBlob`。 +explicit阻止了构造函数的隐式转换,只能将函数直接初始化,不能拷贝初始化。这种设计让程序变得容易使用但是很难dubug。 ## 练习12.6 @@ -987,4 +988,4 @@ public: private: // ... }; -``` \ No newline at end of file +```