비디오: C# Tutorial 2024
생성자는 개체가 자체를 초기화 할 수 있도록 개체를 만들 때 C ++이 자동으로 호출하는 특수 함수입니다. 복사 및 이동 생성자로 알려진 생성자에는 두 가지 특정 변형이 있습니다.
복사 생성자는 C ++에서 객체의 복사본을 만드는 데 사용하는 생성자입니다. 이름은 X:: X (const X &)입니다. 여기서 X 는 클래스의 이름입니다. 즉, X 클래스의 생성자이며 X 클래스의 객체에 대한 참조를 인수로 사용합니다. 이것은 정말로 쓸모없는 것처럼 들리지만, C ++에 그러한 비법이 필요한 이유를 찾기 위해 잠시 시간을내어주십시오.
->다음과 같은 함수를 호출 할 때 일어나는 일에 대해 잠시 생각해보십시오.
void fn (Student fs) {// … 동일한 시나리오; 다른 인수 …} int main (int argcs, char * pArgs []) {Student ms; fn (ms); return 0;}
fn () 호출에서 C ++은 객체 자체가 아닌 ms 객체의 복사본을 전달합니다.
이제 객체의 복사본을 만드는 것이 무엇을 의미하는지 생각해보십시오. 첫째, 객체를 생성하기위한 생성자, 심지어 기존 객체의 복사본을 필요로합니다. C ++은 기존 객체를 한 번에 1 바이트 씩 새 객체에 복사하는 기본 복사 생성자를 만들 수 있습니다.
-C와 같은 오래된 언어가 그렇습니다. 그러나 클래스가 객체의 단순한 복사본을 원하지 않는다면 어떻게 될까요? 다른 것이 필요한 경우에는 어떻게해야합니까? ("왜?"을 잠시 무시하십시오.) 클래스는 사본을 생성하는 방법을 정확하게 지정할 수 있어야합니다.
따라서 C ++은 앞의 예제에서 복사 생성자를 사용하여 함수 fn ()을 호출하는 동안 스택에 개체 ms 의 복사본을 만듭니다. 이 특정 복사 생성자는 Student:: Student (Student &)입니다. 세 번 빨리 말하십시오.
-