클래스를 생성하고 생성자를 통해 객체 배열을 초기화했습니다. 이유는 무엇입니까? 또는 왜 복사 생성자가 여기 호출되지 않았습니까? 그것은 elion 복사입니까? 네 말이 맞아[Prob] 복사 생성자가 호출되지 않는 이유
#include<iostream>
#include<stdio.h>
class ABC
{
int x, y;
public:
ABC()
{
x = 0;
y = 0;
}
ABC(int a,int b)
{
x = a;
y = b;
}
ABC(const ABC &obj)
{
std::cout<<"Copy called";
}
};
int main()
{
ABC obj[2] = {ABC(), ABC(5,6)}; //copy elision or copy constructor?
}
컴파일 코드를 입력하십시오. 헤더가 누락되었습니다. 모든 생성자가 비공개입니다. – Holt
그리고 예, 이것은 copy-elision 때문입니다. clang 또는 g ++를 사용하는 경우'-fno-elide-constructors'를 사용하여 컴파일하십시오. – Holt
가능한 [복제 추출 및 반환 값 최적화 란 무엇입니까?] (http://stackoverflow.com/questions/12953127/what-are-copy-elision-and-return-value-optimization) – Holt