これは、クラスにコピー コンストラクターがないためです。コピー コンストラクターが作成されていない場合、C++ は既定のコンストラクターを呼び出します。明らかに cout<<"X" 行がありません。
Uno u; // your constructor called, --> X to output
Uno k = u; // default copy constructor called
ただし、メンバー変数がない場合、コピー コンストラクターは意味がありません。
だから、これがあなたが望むものだとしましょう:
#include <iostream>
#include <string>
using namespace std;
class Uno
{
public:
string text;
// constructor
Uno()
{
text = "X";
cout << text;
}
// copy constructor
Uno(const Uno &o)
{
text = o.text;
cout << text;
}
};
int main()
{
Uno u; // call constructor -> X
u.text = "Y"; // change text in constructed object
Uno k=u; // create new object via calling copy constructor --> Y
// so u.text copied to k.text
return 0;
}
私はlearncpp.comの記事をお勧めします。それらは非常に便利で、物事をシンプルに保ちます.
コピー コンストラクターと代入演算子の詳細:
http://www.learncpp.com/cpp-tutorial/911-the-copy-constructor-and-overloading-the-assignment-operator/