>백엔드 개발 >C++ >C에서 상수 데이터 멤버를 올바르게 초기화하려면 어떻게 해야 합니까?

C에서 상수 데이터 멤버를 올바르게 초기화하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-10 01:15:10916검색

How Can I Properly Initialize Constant Data Members in C  ?

Const 데이터 멤버 초기화: 종합 가이드

소개:

초기화 이해 C의 상수 데이터 멤버 수는 당황스러울 수 있습니다. 이 문서에서는 일반적인 오류를 해결하고 프로세스에 대한 자세한 설명을 제공하여 이 측면을 명확히 하는 것을 목표로 합니다.

발생한 오류:

다음 코드 조각을 고려하세요.

#include <iostream>

using namespace std;

class T1 {
  const int t = 100;
  public:
  
  T1() {
    cout << "T1 constructor: " << t << endl;
  }
};

클래스 생성자 내에서 const 데이터 멤버 t를 초기화하려고 하면 다음 오류가 발생합니다. 발생:

test.cpp:21: error: ISO C++ forbids initialization of member ‘t’
test.cpp:21: error: making ‘t’ static

오류 이해:

오류는 클래스 정의 내에서 const 데이터 멤버의 초기화를 허용하지 않는 C 언어 제한으로 인해 발생합니다. 이는 const 변수에 고유한 정의가 필요하기 때문이며, 여러 번역 단위에 포함될 경우 이를 보장할 수 없습니다.

Const 데이터 멤버를 초기화하는 방법:

const를 초기화하려면 데이터 멤버인 경우 클래스 정의 외부에서 정의해야 합니다. 이는 클래스 초기화 목록을 통해 달성할 수 있습니다:

T1() : t(100) {}

초기화 목록에서 클래스 초기화가 발생하기 전에 t에 값 100이 할당됩니다. 이렇게 하면 객체 생성 시 const 데이터 멤버가 초기화됩니다.

결론:

const 데이터 멤버를 초기화하려면 특정 언어 규칙을 준수해야 합니다. 클래스 정의 외부에서 정의하고 초기화 목록을 사용함으로써 프로그래머는 const 데이터 멤버를 효과적으로 초기화하고 앞서 언급한 오류를 피할 수 있습니다.

위 내용은 C에서 상수 데이터 멤버를 올바르게 초기화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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