C 中的构造函数链接:与 C# 的比较
在 C# 中,构造函数可以链接在一起以增量初始化对象。作为 C# 开发人员,您可能想知道 C 中是否存在类似的机制。
在提供的 C# 代码片段中:
class Test { public Test() { DoSomething(); } public Test(int count) : this() { DoSomethingWithCount(count); } public Test(int count, string name) : this(count) { DoSomethingWithName(name); } }
每个构造函数都会调用其前一个构造函数,从而允许顺序初始化对象的状态。
C 11 和以后
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 和 具有特定值y.
C 03
C 03 不直接支持构造函数链。但是,有两种解决方法:
class Foo { public: Foo(char x, int y=0); // combines two constructors (char) and (char, int) // ... };
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) { // ... }
对于 C 03,init 方法技术通常是首选,因为它比使用默认参数具有灵活性和潜在的性能优势。
以上是C 中的构造函数链接与 C# 的实现相比如何?的详细内容。更多信息请关注PHP中文网其他相关文章!