C++核心准则C.52:合理使用继承的构造函数
发布日期:2021-07-01 05:26:36 浏览次数:3 分类:技术文章

本文共 1251 字,大约阅读时间需要 4 分钟。

C.52: Use inheriting constructors to import constructors into a derived class that does not need further explicit initialization

C.52:使用继承的构造函数功能将构造函数导入不再需要进一步明确初始化的派生类

 

Reason(原因)

If you need those constructors for a derived class, re-implementing them is tedious and error-prone.

如果派生类需要那些构造函数,重新实现它们的工作单调乏味而且容易发生错误。

 

Example(示例)

std::vector has a lot of tricky constructors, so if I want my own vector, I don't want to reimplement them:

std::vector有大量的构造函数很难用,因此如果我需要自己的vector,我不会重新实现它们。

 

class Rec {    // ... data and lots of nice constructors ...};class Oper : public Rec {    using Rec::Rec;    // ... no data members ...    // ... lots of nice utility functions ...};

 

 

Example, bad(反面示例)

 

struct Rec2 : public Rec {    int x;    using Rec::Rec;};Rec2 r {"foo", 7};int val = r.x;   // uninitialized

 

 

这就是需要进一步初始化的例子。如果派生类没有增加数据成员只是增加一些功能,就可以使用using Rec::Rec这种方法导入基类的构造函数。对于上面的例子也可以考虑使用类内初始化器初始化数据成员x。

 

 

Enforcement

Make sure that every member of the derived class is initialized.

保证派生类的所有成员都被初始化。

 

 

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c52-use-inheriting-constructors-to-import-constructors-into-a-derived-class-that-does-not-need-further-explicit-initialization

 


 

觉得本文有帮助?欢迎点赞并分享给更多的人。

阅读更多更新文章,请关注微信公众号【面向对象思考】

转载地址:https://oothinking.blog.csdn.net/article/details/104616307 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++核心准则C.60: 拷贝赋值运算符应该是以const&为参数,返回非常量引用类型的非虚函数
下一篇:C++核心准则C.51:使用委托构造函数实现所有构造函数的共通动作

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年05月05日 22时07分46秒