>백엔드 개발 >C++ >C++ 구문 오류: 멤버 변수는 생성자 초기화 목록에서 초기화되어야 합니다. 어떻게 처리해야 합니까?

C++ 구문 오류: 멤버 변수는 생성자 초기화 목록에서 초기화되어야 합니다. 어떻게 처리해야 합니까?

王林
王林원래의
2023-08-21 22:46:451332검색

C++로 프로그래밍할 때 때때로 "멤버 변수는 생성자 초기화 목록에서 초기화되어야 합니다."와 같은 컴파일 오류가 발생합니다. 이 오류는 일반적으로 클래스 생성자에서 멤버 변수를 초기화해야 할 때 발생합니다.

그러면 이런 오류는 어떻게 처리해야 할까요? 이 기사에서는 독자가 멤버 변수 초기화의 원리와 방법을 더 잘 이해할 수 있도록 C++의 멤버 변수 초기화에 대해 자세히 소개합니다.

  1. 개요

C++에서는 클래스의 멤버 변수를 다음 두 가지 방법으로 초기화할 수 있습니다.

(1) 생성자의 초기화 목록에서 초기화

(2) 생성자의 함수 본문에서 초기화

그 중에서 첫 번째 방법이 권장되는 방법입니다. 이는 효율적일 뿐만 아니라 생성자가 실행을 시작하기 전에 멤버 변수가 올바르게 초기화되었는지 확인합니다. 두 번째 방법은 각 멤버 변수의 초기화가 필요하고 생성자를 여러 번 호출하게 되므로 더 까다롭습니다.

  1. 생성자 초기화 목록

생성자 초기화 목록은 생성자에서 클래스의 멤버 변수를 초기화하는 부분을 말합니다. 초기화 리스트를 통해 멤버변수의 초기값을 지정할 수 있어 함수 본체에서 값을 할당하는 수고를 덜 수 있다.

클래스를 구현할 때 클래스의 멤버 변수를 초기화해야 한다면 생성자의 초기화 목록에서 초기화해야 합니다.

예:

class Student {

private:

string name;

int age;

public:

Student(string name_, int age_): name(name_), age(age_){

}

};

이 예에서는 클래스의 두 멤버 변수 name 및 age가 생성자의 초기화 목록에서 초기화됩니다. 이렇게 하면 코드가 단순화될 뿐만 아니라 멤버 변수가 올바르게 초기화될 수도 있습니다.

  1. 멤버변수 초기화 순서

생성자 초기화 목록을 사용하여 멤버변수를 초기화할 때 멤버변수 초기화 순서에 주의해야 합니다. C++에서 클래스 멤버 변수의 초기화 순서는 클래스에서 선언된 순서와 관련이 있습니다.

예:

class A {

private:

int a;

int b;

public:

A(int _a, int _b): a(_a), b(_b){

}

};

이 예에서 멤버 변수 a와 b의 초기화 순서는 선언된 순서와 동일합니다. 수업 중. 생성자 초기화 목록에서 a와 b의 순서가 바뀌면 a 변수가 초기화되지 않아 컴파일 오류가 발생합니다.

  1. 요약

C++ 프로그래밍에서는 멤버 변수의 초기화가 매우 중요합니다. 프로그램의 정확성과 효율성을 보장하려면 항상 생성자 초기화 목록을 사용하여 클래스의 멤버 변수를 초기화하여 함수 본문 내에서 값을 할당하지 않도록 해야 합니다. 멤버 변수의 초기화 순서는 클래스에서 선언된 순서와 관련이 있으므로 초기화 순서에도 주의해야 합니다.

위 내용은 C++ 구문 오류: 멤버 변수는 생성자 초기화 목록에서 초기화되어야 합니다. 어떻게 처리해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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