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 중국어 웹사이트의 기타 관련 기사를 참조하세요!