是否有一种自动初始化私有变量的方法,而不是将它们作为构造函数参数接受
Is there an automatic way to initialize private variables - instead of accepting them as constructor arguments?
我正试图使用构造函数初始化一个私有变量,但在查看代码时,这似乎很烦人,而且重复性很强。
class Parent
{
public:
Parent(string _name, string _eyecolor, string _skincolor, string _gender, int _age)
{
// Cluttered
_name = name;
_eyecolor = eyecolor;
_skincolor = skincolor;
_gender = gender;
_age = age;
}
private:
string name, eyecolor, skincolor, gender;
int age;
};
您可以定义一个默认构造函数,该构造函数使用您在C++11:中定义的另一个构造函数
class Parent
{
public:
Parent() :
Parent("Richard", "Pink", "Green", "Male", 777)
{}
Parent(string _name, string _eyecolor, string _skincolor, string _gender, int _age)
{
// Cluttered
_name = name;
_eyecolor = eyecolor;
_skincolor = skincolor;
_gender = gender;
_age = age;
}
private:
string name, eyecolor, skincolor, gender;
int age;
};
如果你的编译器不支持这个功能,你可以手动完成:
class Parent
{
public:
Parent() :
name("Richard"),
eyecolor("Pink"),
skincolor("Green"),
gender("Male"),
age(777)
{}
Parent(string _name, string _eyecolor, string _skincolor, string _gender, int _age)
{
// Cluttered
_name = name;
_eyecolor = eyecolor;
_skincolor = skincolor;
_gender = gender;
_age = age;
}
private:
string name, eyecolor, skincolor, gender;
int age;
};
不,没有自动初始化成员变量的方法。如果你仔细想想,如果真的有,那就太可怕了。编译器如何知道您想要用什么初始化变量?
正如其他人所说,您实际上并没有初始化成员。你甚至没有给他们分配任何东西。您在这里将成员变量分配给构造函数的参数。在构造函数中查找初始化成员变量的语法。它可能是这样的,可以按照你喜欢的格式购买(我在平板电脑上,所以我不能很好地格式化它)。
class Parent {
public:
Parent(string _name, string _eyecolor, string _skincolor, string _gender, int _age)
: name{ _name }, eyecolor{ _eyecolor }, skincolor{ _skincolor }, gender{ _gender }, age{ _age }
{
}
private:
string name, eyecolor, skincolor, gender;
int age;
};
如果你想用一些(定义的)值初始化它们而不传递参数,你可以用默认的构造函数初始化它们,基本上和我上面做的一样。
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?