作为 C# 开发人员,您可能熟悉从构造函数内调用其他构造函数的功能。在 C# 中,这称为构造函数链接。 C 中是否有类似的功能?
在 C 11 及更高版本中,通过委托构造函数支持构造函数链。语法与 C# 略有不同:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
在此示例中,构造函数 Foo(int y) 委托给构造函数 Foo(char x, int y),其中 x 设置为 'a'。
不幸的是,C 03 不直接支持构造函数链。但是,有两个模拟此行为的主要选项:
1。默认参数:
您可以通过为某些参数提供默认值来组合多个构造函数:
class Foo { public: Foo(char x, int y = 0); // Combines constructors Foo(char) and Foo(char, int) };
2.初始化方法:
将公共代码提取到私有方法中:
class Foo { public: Foo(char x); Foo(char x, int y); private: void init(char x, int y); }; Foo::Foo(char x) : init(x, int(x) + 7) {} Foo::Foo(char x, int y) : init(x, y) {} void Foo::init(char x, int y) { // Shared initialization code }
虽然这些技术不提供真正的构造函数链,但它们允许类似的功能。
以上是C 是否支持构造函数链,与 C# 相比如何?的详细内容。更多信息请关注PHP中文网其他相关文章!