この2つのコードでコンパイル自体はうまくいくのですが、すべて表示されません。
どうすれば表示されますか?
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
//carクラスの宣言
class Car {
private:
int num;
double gas;
char* pName;
public:
Car(const char* pN, int n, double g);
~Car();
void show();
};
//Carクラスメンバ関数の定義
Car::Car(const char* pN, int n, double g)
{
pName = new char[strlen(pN) + 1];
strcpy(pName, pN);
num = n;
gas = g;
cout << pName << "を作成しました。\n";
}
Car::~Car()
{
cout << pName << "を破棄します。\n";
delete[] pName;
}
void Car::show()
{
cout << "車のナンバーは" << num << "です。\n";
cout << "ガソリン量は" << gas << "です。\n";
cout << "名前は" << pName << "です。\n";
}
//Carクラスの利用
int main()
{
Car car1("mycar", 1234, 25.5);
car1.show();
return 0;
}
表示したい文字:
mycarを作成しました
車のナンバーは1234です
ガソリンの量は20.5です
名前はmycarです←ここまで表示される
mycarを破棄します
サンプル3
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
//Carクラスの宣言
class Car {
private:
int num;
double gas;
char* pName;
public:
Car(const char* pN, int n, double g);
~Car();
Car(const Car& c);
Car& operator=(const Car& c);
};
//Carクラスメンバ関数の定義
Car::Car(const char* pN, int n, double g)
{
pName = new char[strlen(pN) + 1];
strcpy(pName, pN);
num = n;
gas = g;
cout << pName << "を作成しました。\n";
}
Car::~Car()
{
cout << pName << "を破棄します。\n";
delete[] pName;
}
Car::Car(const Car& c)
{
cout << c.pName << "で初期化します。\n";
pName = new char[strlen(c.pName) + strlen("のコピー1") + 1];
strcpy(pName, c.pName);
strcat(pName, "のコピー1");
num = c.num;
gas = c.gas;
}
Car& Car::operator=(const Car& c)
{
cout << pName << "に" << c.pName << "を代入します。\n";
if (this != &c) {
delete[] pName;
pName = new char[strlen(c.pName) + strlen("のコピー2") + 1];
strcpy(pName, c.pName);
strcat(pName, "のコピー2");
num = c.num;
gas = c.gas;
}
return *this;
}
int main()
{
Car mycar("mycar", 1234, 25.5);
Car car1 = mycar;
Car car2("car2", 0, 0);
car2 = mycar;
return 0;
}
表示したい文:
mycarを作成しました
mycarで初期化します
car2を作成しました
car2にmycarを代入します←ここまでうまくいく
mycarのコピー2を破棄します
mycarのコピー1を破棄します
mycarを破棄します
よろしくお願いします
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/11 12:51
2018/04/11 12:55
2018/04/11 13:00 編集
2018/04/11 13:31 編集
2018/04/11 13:35
2018/04/11 14:00
2018/04/12 08:38
2018/04/12 12:13
2018/04/12 12:16
2018/04/12 12:17