클래스 정의가 있습니다. 그리고 나는 어떤 생성자의 행동에 대해 혼란스러워합니다. 다음은 코드입니다.어떤 경우 생성자가 작동하지 않는 이유가 무엇인가요?
#include <iostream>
#include <cstdlib>
using namespace std;
class A
{
int i;
public:
void seti(int v) {cout << "Setting i\n"; i=v;}
void print() {cout << "i = " << i << endl;}
A(){};
A(int v) {cout << "Setting i in par-ctor to " << v << "\n"; i=v;}
A(A& o) {cout << "In copy ctor, changing i to " << o.i << "\n";i=o.i;}
A& operator=(A o) {cout << "In assignment op\n"; this->i = o.i; return(*this);}
};
int main()
{
A o1;
A o2(2);
A o3 = A(4);
A o4 = 35;
return(0);
}
내가이 코드는 컴파일되지 않는 이유를 알고 싶어하지 않는
a)에 정의 된 복사 생성자는 주석, 또는
b)에 정의 된 복사 생성자가 A& A(const A& o)
에서 같은 'const'
규정이있다거나
c) o3 및 o4에 대한 개체 초기화가 제거됩니다. 생성자 A (INT)의 호출이 예상되는 (c)에 관해서
,
어떻게 생성자 (INT)와 매개 화와 실제 복사 생성자 정의 (const
없는 한) 충돌? 여기
고마워요! 완전히 이해가됩니다. – anupamb
@anupamb 그것이 옳다고 생각한다면 동의하는 것을 잊지 마십시오. –