我可以利用 C 中的构造函数链吗?
构造函数链是 C# 开发人员熟悉的概念,允许执行来自其他。这提供了一种有效的方法来初始化父类及其派生类中的对象。
C 11 及更高版本:构造函数链
在 C 11 及更高版本中,构造函数通过委托构造函数支持链接。语法与 C# 略有不同:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
此代码定义了两个构造函数:一个采用 (char x, int y),另一个采用 (int y)。第二个构造函数使用 this 指针调用第一个构造函数,将 x 初始化为 'a'。
C 03:构造函数模拟
不幸的是,C 03 本身不支持构造函数链接。不过,有两种方法可以模拟其效果:
class Foo { public: Foo(char x, int y = 0); // This combines (char) and (char, int) constructors. };
class Foo { public: Foo(char x); Foo(char x, int y); private: void init(char x, int y); }; Foo::Foo(char x) : Foo(x, int(x) + 7) {} // Calls init(x, int(x) + 7). Foo::Foo(char x, int y) : Foo(x, y) {} // Calls init(x, y). void Foo::init(char x, int y) {}
通过参考 C FAQ 以获得进一步指导,您可以使用这些方法有效地模拟 C 03 中的构造函数链。
以上是如何在 C 中实现构造函数链?的详细内容。更多信息请关注PHP中文网其他相关文章!