C# 개발자라면 생성자 내에서 다른 생성자를 호출하는 기능에 익숙할 것입니다. C#에서는 이를 생성자 체이닝이라고 합니다. C에도 비슷한 기능이 있나요?
C 11 이상 버전에서는 생성자 위임을 통해 생성자 연결이 지원됩니다. 구문은 C#과 약간 다릅니다.
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
이 예에서 생성자 Foo(int y)는 x가 'a'로 설정된 생성자 Foo(char x, int y)에 위임합니다.
안타깝게도 C 03에서는 생성자 체이닝을 직접 지원하지 않습니다. 그러나 두 가지 주요 기능이 있습니다. 이 동작을 시뮬레이션하기 위한 옵션:
1. 기본 매개변수:
일부 매개변수에 기본값을 제공하여 여러 생성자를 결합할 수 있습니다.
class Foo { public: Foo(char x, int y = 0); // Combines constructors Foo(char) and Foo(char, int) };
2. Init 메서드:
공통 코드를 개인 메서드로 추출:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!