Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
全部都想学怎么办
CppCoreGuidelines
提交
840fa592
C
CppCoreGuidelines
项目概览
全部都想学怎么办
/
CppCoreGuidelines
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CppCoreGuidelines
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
840fa592
编写于
10月 05, 2020
作者:
S
Sergey Zubkov
提交者:
GitHub
10月 05, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
merge C.150 in R.23, leaving a redirect behind (#1676)
上级
dd98129f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
31 deletion
+7
-31
CppCoreGuidelines.md
CppCoreGuidelines.md
+7
-31
未找到文件。
CppCoreGuidelines.md
浏览文件 @
840fa592
...
...
@@ -8009,34 +8009,7 @@ Avoid resource leaks.
### <a name="Rh-make_unique"></a>C.150: Use `make_unique()` to construct objects owned by `unique_ptr`s
##### Reason
`make_unique` gives a more concise statement of the construction.
It also ensures exception safety in complex expressions.
##### Example
unique_ptr<Foo> p {new Foo{7}}; // OK: but repetitive
auto q = make_unique<Foo>(7); // Better: no repetition of Foo
// Not exception-safe: the compiler might interleave the computations of arguments as follows:
//
// 1. allocate memory for Foo,
// 2. construct Foo,
// 3. call bar,
// 4. construct unique_ptr<Foo>.
//
// If bar throws, Foo will not be destroyed, and the memory-allocated for it will leak.
f(unique_ptr<Foo>(new Foo()), bar());
// Exception-safe: calls to functions are never interleaved.
f(make_unique<Foo>(), bar());
##### Enforcement
* Flag the repetitive usage of template specialization list `<Foo>`
* Flag variables declared to be `unique_ptr<Foo>`
See [R.23](#Rr-make_unique)
### <a name="Rh-make_shared"></a>C.151: Use `make_shared()` to construct objects owned by `shared_ptr`s
...
...
@@ -9575,11 +9548,14 @@ The `make_shared()` version mentions `X` only once, so it is usually shorter (as
##### Reason
For convenience and consistency with `shared_ptr`.
`make_unique` gives a more concise statement of the construction.
It also ensures exception safety in complex expressions.
#####
Not
e
#####
Exampl
e
`make_unique()` is C++14, but widely available (as well as simple to write).
unique_ptr<Foo> p {new Foo{7}}; // OK: but repetitive
auto q = make_unique<Foo>(7); // Better: no repetition of Foo
##### Enforcement
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录