>백엔드 개발 >C++ >C에서 생성자 체이닝을 어떻게 구현할 수 있나요?

C에서 생성자 체이닝을 어떻게 구현할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2025-01-02 17:30:39793검색

How Can I Implement Constructor Chaining in C  ?

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.