가능한 중복에 대한 혼란 스러워요 : 다음 코드에서
Why copy constructor is not called in this case?내가 C에서 복사 생성자 ++
, 나는 세 개의 변수, A1, A2 및 A3 건설했다. C++ 프라이머 p.476의 예를 거기
는 :
string empty_copy = string();//copy-initialization
사람이 나를 설명 할 수 있습니까
1) 왜 A1과 A2는 복사 생성자에 의해 구성되지 않고
2) 내 코드에서 초기화 a2와 책에서 empty_copy의 차이점은 무엇입니까?
감사합니다.
#include<iostream>
using namespace std;
class A{
public:
A(){}
A(int v){}
A(const A&x){
cout<<"copy constructor"<<endl;
}
};
A generateA(){
return A(0);
}
int main(){
cout<<"First:"<<endl;
A a1=generateA();
cout<<"Second:"<<endl;
A a2=A(0);
cout<<"Third:"<<endl;
A a3=a1;
return 0;
}
은 (비주얼 Win7에 스튜디오 2010 Ubuntu10.10에서 g ++ 아래) 넣어입니다 :
First:
Second:
Third:
copy constructor
그리고 * 또한 임시로 초기화 때문에 elion을 복사하십시오. 그래서 두 종류의 용출액이 사용되었습니다. –
감사! BTW, 최적화를 비활성화하는 방법이 있습니까? –
@ user1265982 : 예. 자세한 내용은 업데이트 된 답변을 확인하십시오. –