Я хочу выяснить, что здесь происходит. Почему я получаю копию объекта, когда передаю его конструктору, который вместо этого ожидает строковый параметр? Вот мой код, просто чтобы уточнить:
#include <iostream>
using namespace std;
class Person
{
public:
Person( string name ):itsName(name){}
/*operator std::string()
{
return itsName;
}*/
void SetName( string name )
{
itsName = name;
}
string GetName()
{
return itsName;
}
private:
string itsName;
};
int main()
{
Person p1( "Lois" );
Person p2( p1 );
cout << p1.GetName() << endl;
cout << p2.GetName();
return 0;
}
Кому я вижу имя p2, которое совпадает с именем p1? Конечно, это интуитивно понятно, но я не установил какой-либо объект в качестве параметра в конструкторе Person. Следует ожидать строку. Я прокомментировал перегруженный оператор строки, который выглядел здесь как «плохой парень», но это не так. Этот код компилируется в Code :: Blocks с использованием MinGW (gcc).