> 백엔드 개발 > C++ > C는 생성자 연결을 지원하며 C#과 어떻게 비교됩니까?

C는 생성자 연결을 지원하며 C#과 어떻게 비교됩니까?

Mary-Kate Olsen
풀어 주다: 2024-12-25 14:22:18
원래의
996명이 탐색했습니다.

Does C   Support Constructor Chaining, and How Does It Compare to C#?

C의 생성자 체이닝

C# 개발자라면 생성자 내에서 다른 생성자를 호출하는 기능에 익숙할 것입니다. C#에서는 이를 생성자 체이닝이라고 합니다. C에도 비슷한 기능이 있나요?

C 11 이상

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

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿