以下是我的.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文件中编码吗
答案 0 :(得分:1)
对于默认构造函数:
ClassTwo() : sType(), x(), y() {}
为了清晰起见,您可以选择更明确地进行初始化:
ClassTwo() : sType(""), x(0), y(0) {}
您也可以省略字符串的初始化,默认为""
。
对于第二个构造函数,最好在没有setter的情况下实现:
ClassTwo(const std::string& s, int x, int y) : sType(s), x(x), y(y) {}
是否在标题中实现或.cpp取决于您。我认为在标题中实现这样的简单构造函数没有任何缺点。
我建议您对数据成员使用命名约定。 x
和y
等名称可能会导致代码中的其他位置发生冲突。
答案 1 :(得分:1)
标题用于定义。包含标题的代码不必知道任何实现(除非您使用的是不同故事的模板...)
无论如何,2个构造函数:
public:
ClassTwo() : sType(""), x(0), y(0) {}
ClassTwo(string _type) : sType(_type), x(0), y(0) {}