0 c++
以下片段来自VC++ 2008 Express Edition.说,我有一个类,其成员是一个结构.我正在尝试为此类的成员变量定义默认值.为什么这不起作用?
struct Country{
unsigned chart id;
unsigned int initials;
std::string name;
};
class world{
private:
Country _country;
unsigned int _population;
public:
world(){};
world():
_country():
id('1'), initials(0), name("Spain") {};
_population(543000) {}
:
:
~world(){};
};
Run Code Online (Sandbox Code Playgroud)
有两种方法可以初始化国家/地区成员数据.像这样 ...
struct Country{
unsigned char id;
unsigned int initials;
std::string name;
};
class world{
private:
Country _country;
public:
world()
{
_country.id = '1';
_country.initials = 0;
_country.name = "Spain";
}
~world(){};
};
Run Code Online (Sandbox Code Playgroud)
......或者,像这样......
struct Country{
unsigned char _id;
unsigned int _initials;
std::string _name;
Country(
unsigned char id,
unsigned int initials,
const std::string& name
)
: _id(id)
, _initials(initials)
, _name(name)
{}
};
class world{
private:
Country _country;
public:
world()
: _country('1', 0, "Spain")
{
}
~world(){};
};
Run Code Online (Sandbox Code Playgroud)
请注意,在第二个示例中,我发现初始化Country实例更容易,因为我将构造函数定义为Country结构的成员.
或者,您可能希望为Country类型提供默认构造函数:
struct Country{
unsigned char _id;
unsigned int _initials;
std::string _name;
Country()
: _id('1')
, _initials(0)
, _name("Spain")
{}
};
class world{
private:
Country _country;
public:
world()
{
}
~world(){};
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |