1

以下は私の.hファイルです

#include <iostream>
#include <string>

using namespace std;

class ClassTwo
{
private:
string sType;
int x,y;
public:
void setSType(string);
void setX(int);
void setY(int);

string getSType();
int getX();
int getY();
};

2コンストラクターを構築したい。

どのコンストラクター1がパラメーターなしになり、すべてのint値を0として初期化し、文字列を空の文字列として初期化します。

コンストラクター2は、メソッドget setを使用して、sType、x、およびyであるパラメーターを取り込みます。

しかし、どうすればこれを達成できますか。これをcppファイルまたは.hファイルにコーディングする必要があります

4

2 に答える 2

1

デフォルトのコンストラクターの場合:

ClassTwo() : sType(), x(), y() {}

わかりやすくするために、初期化をより明示的にすることを選択できます。

ClassTwo() : sType(""), x(0), y(0) {}

文字列の初期化を省略することもできます。デフォルトはです""

2番目のコンストラクターの場合、セッターなしで実装するのが最適です。

ClassTwo(const std::string& s, int x, int y) : sType(s), x(x), y(y) {}

ヘッダーに実装するか、.cppに実装するかはあなた次第です。このような単純なコンストラクターをヘッダーに実装することに不利な点はありません。

データメンバーには命名規則を使用することをお勧めします。xやなどの名前yは、コードの他の場所で衝突する可能性があります。

于 2012-10-07T09:28:43.390 に答える
1

ヘッダーは定義用です。ヘッダーを含むコードは、実装を知る必要はありません(別の話であるテンプレートを使用している場合を除きます...)

とにかく、2つのコンストラクター:

public:
ClassTwo() : sType(""), x(0), y(0) {}
ClassTwo(string _type) : sType(_type), x(0), y(0) {}
于 2012-10-07T09:30:34.640 に答える