目前我正在设计一个类级等级结构 大致上看起来是这样的:
struct Protocol
{
// Pass lower-layer protocol as a reference.
Protocol(Protocol & inLLProtocol) :
mLLProtocol(inLLProtocol)
{
}
// A protocol "always" has a LLProtocol.
Protocol & mLLProtocol;
};
struct Layer1Protocol : Protocol
{
// This is the "bottom" protocol, so I pass a fake reference.
Layer1Protocol() : Protocol(*static_cast<Protocol*>(nullptr)) {}
};
IIRC 约束引用 < code_nullptr 是安全的, 只要该引用从未被访问过。 所以现在我有责任设计我的Thile1《议定书》类, 以防止它发生。
我喜欢这个方法,因为我保证所有用户协议例都提到其各自的低层协议(Layer1协议是例外,但它是核心图书馆的一部分)。我认为这比与指针一起工作更好,因为一旦引入指针,就有可能通过无效指针,然后可能需要在运行时检查,结果很多指针检查代码和偶然的错误。
你认为我的参考法是可维护的吗? 还是使用无效参考法总是不好的做法?