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) 생성자는 x에 대한 특정 값을 사용하여 초기화를 Foo(char x, int y) 생성자에 위임합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!