这篇给大家介绍什么是PImpl惯用法,以及使用std::unique_ptr 实现,并且实现了该的复制和赋值构造函数 pimpl 惯用法 在很多C++ 的API源码里,我们经常看到接口类通常指包含公有方法,而真正的实现类通常用一个不透明指针 (opaque pointer) 指向。 例如 // x.h class X{ public: void func(); private: class XImpl; Ximpl *impl_; }; // x.cpp class X::XImpl{ // ::: // impl…

2020年02月03日 0条评论 333点热度 0人点赞 阅读全文

我们知道如果不提供默认/copy/copy-assignment构造函数,编译器会为我们自动生成相应的构造函数,那么在C++编程实践中,什么时候需要提供构造函数,什么时候要利用编译器的自动生成功能呢?大佬们总结为三五法则还有零法则。 C++ 中一个类有以下6种特殊的成员函数需要关注: // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#note-99 class X { pub…

2020年02月01日 0条评论 362点热度 0人点赞 阅读全文

最近读《C++ API Design》,其中第二章《优质API的特征》可以在网上找到 原文链接。 觉得讲得非常实用,对于做程序库/API开发的程序员来说是个很好的总结,把相关要点做成了思维导图: 以下是对一些要点的总结归纳: 问题域建模 API 应该首先为问题提供一个清晰的解决方案,同时能对实际的问题域进行准确的建模。 提供良好的抽象, API对它所解决的问题需要提供良好的逻辑抽象,** 对问题进行抽象,而不是公开底层实现细节** 在面向对象中,需要对问题域中的关键对象建模:面向对象设计,对对象的层次结构设计。 隐…

2020年01月27日 0条评论 382点热度 0人点赞 阅读全文