나는 아래의 18 행에있는 코드가 "복사해야 할 멤버 중 하나가 참조 일 때 암시 적으로 정의 된 대입 연산자를 사용하는 것이 좋지 않기 때문에"형식이 잘못되었다고 말했습니다.왜 클래스 멤버가 참조 인 경우 개체를 복사하는 것은 불법입니까?
나는 그것을 이해할 수 없었다. 참조를 복사 할 수없는 이유는 무엇입니까? 16 번 라인이 합법적 인 이유는 무엇입니까? 16 번 줄은 18 번 줄과 매우 유사합니다. 복사 생성자가 여전히 복사를해야합니다.
1 #include <iostream>
2
3 struct A
4 {
5 A(int& var) : r(var) {}
6
7 int &r;
8 };
9
10 int main(int argc, char** argv)
11 {
12 int x = 23;
13
14 A a1(x);
15
16 A a2 = a1;
17
18 a2 = a1;
19
20 return 0;
21 }
[전체 퀴즈를 게시 하시겠습니까?] (http://stackoverflow.com/questions/27792560/c-why-constructor-aa-a-is-illegal) – WhozCraig
아 .. 그 말이 맞습니다. 97.4 % 테스트 btw에 grat. – WhozCraig
* copy *가 아니라 * assign *에 불법입니다. – Potatoswatter