在 C++ 中,大多数开发人员使用pimpl idiom或opaque 指针来隐藏公共 API 的私有数据/实现,例如:
- =>第一种情况 ## 不透明指针和 PIMPL 成语 ##
// 在头文件中
class Node;
class Graph {
public:
A();
private:
Node* m_nodeImpl;
}
// 类 Node 将在各自的 cpp 中定义
2.=>第二种情况##内部类/嵌套类方法##
// 在头文件中
class Graph {
public:
Graph(){};
private:
class Node
{
// implementation goes here
}
Node* m_nodeImpl;
}
问题是...
- 从类设计的角度来看,这两者之间的实际区别是什么(可能是设计模式)?
- 每个人的优点和缺点是什么?