initializer lists c
C ++의 이니셜 라이저 목록에 대한 모든 정보와 예제를 자세히 살펴보세요.
C ++는 이니셜 라이저 목록을 사용하여 데이터 멤버를 해당 값으로 초기화합니다.
이니셜 라이저 목록은 생성자 본문의 값을 초기화 할 수없는 특정 상황에서 주로 사용됩니다.
버블 정렬 함수 C ++
=> 무료 C ++ 과정을 보려면 여기를 클릭하십시오.
C ++의 이니셜 라이저 목록
이니셜 라이저 목록의 일반 구문은 다음과 같습니다.
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
이니셜 라이저 목록이 사용되는 이러한 상황 중 일부는 다음과 같습니다.
# 1) 멤버 객체 클래스에 기본 생성자가 제공되지 않습니다.
클래스의 멤버로 다른 클래스 객체가 있고 해당 객체의 클래스에 기본 생성자가없는 경우 이니셜 라이저 목록을 사용하여이 데이터 멤버 객체를 초기화합니다.
이것은 다음 프로그램에 표시됩니다.
#include using namespace std; class A { int i; public: A(int ); }; A::A(int val) { i = val; cout << 'Constructor ::A ; i = ' << i << endl; } class B { A a; public: B(int ); }; B::B(int val):a(val) { cout << 'Constructor :: B'; } int main() { B obj(10); return 0; }
산출:
생성자 :: A; 나는 = 10
생성자 :: B
위 프로그램에서 클래스 A의 객체는 클래스 B의 데이터 멤버입니다. 클래스 A에는 매개 변수화 된 생성자가 있지만 기본 생성자는 없습니다. 따라서 클래스 A 객체를 생성하려면 클래스 B의 이니셜 라이저 목록을 사용해야합니다.
# 2) C 초기화 우리의 데이터 회원.
const 데이터 멤버는 한 번만 초기화 할 수 있으므로 이니셜 라이저 목록을 사용하여 초기화합니다.
다음 예제를 사용하여이를 시연합니다.
#include using namespace std; class sample { private: const int val; public: sample(int val):val(val) { cout << 'Value is ' << val; } }; int main() { sample obj(10); }
산출:
값은 10입니다.
위의 프로그램에서 데이터 멤버로 const가 있습니다. 이 const 멤버를 값으로 초기화해야한다면 다음과 같이 이니셜 라이저 목록을 사용하여 수행합니다.
# 3) 참조 데이터 유형 초기화.
상수와 마찬가지로 참조는 변경할 수 없습니다. 따라서 참조 유형 데이터 멤버를 초기화해야 할 때마다 이니셜 라이저 목록을 사용합니다.
다음 프로그램에서는 이니셜 라이저 목록을 사용하여 참조 데이터 멤버를 초기화합니다.
#include using namespace std; class sample { private: int &ref_val; public: sample(int &ref_val):ref_val(ref_val) { cout << 'Value is ' << ref_val; } }; int main() { int ref=10; sample obj(ref); return 0; }
산출:
값은 10입니다.
이 프로그램에서는 데이터 멤버로 참조가 있고 이니셜 라이저 목록을 사용하여 초기화합니다.
# 4) Member Name과 Parameter가 같은 이름 일 때.
Java와 C ++의 차이점은 무엇입니까
클래스의 멤버 이름이 매개 변수로 초기화되고 이러한 매개 변수가 멤버 이름과 동일한 이름을 가질 때 이니셜 라이저 목록을 사용합니다. 이전 주제에서 동일한 상황에 대해이 포인터를 사용했습니다. 두 번째 옵션은 이니셜 라이저 목록입니다.
다음 프로그램에서 이니셜 라이저 목록을 사용하기 위해 위의 예제를이 포인터로 수정했습니다.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< 산출:
숫자 = 100
ch = A

이 프로그램에서는 동일한 이름을 가진 데이터 멤버를 초기화하는 매개 변수를 전달합니다. 이 경우이 목적을 위해 이니셜 라이저 목록을 사용합니다.
# 5) 성능 향상
생성자의 본문에서 데이터 멤버를 초기화 할 때마다 값을 할당하는 동안 데이터 멤버에 대한 임시 개체가 생성됩니다. 할당이 완료되면이 임시 개체가 삭제됩니다. 이것은 실제로 오버 헤드입니다.
반면에 이니셜 라이저 목록을 사용하면 값을 할당하는 데 복사 생성자가 사용됩니다. 이렇게하면 성능이 크게 향상됩니다.
결론
따라서이 튜토리얼에서 우리는 C ++ 프로그래밍에서 사용해야하는 많은 상황과 함께 이니셜 라이저 목록에 대해 배웠습니다.
이러한 상황이 없을 때 이니셜 라이저 목록을 사용할 필요는 없지만 프로그램 성능을 향상시키기 위해 항상 사용할 수 있습니다.
다가오는 튜토리얼에서는 C ++의 friend 함수에 대해 자세히 설명합니다.
=> 전체 C ++ 자습서 목록을 탐색하려면 여기를 참조하십시오.
추천 도서