下面就来详细讲解一下 C++ 中的对象初始化操作代码的完整攻略。
什么是对象初始化
在 C++ 中,定义一个对象后不仅要申请存储空间,还需要对对象进行赋值或初始化,以便使其具备正确的初始值和状态。对象初始化即是给刚申请的存储空间一个初始值和状态的过程,其作用是为了确保程序的正确性和安全性。因此,在使用对象之前应确保其已被正确初始化。
对象初始化方式
在 C++ 中,可以通过三种方式来进行对象初始化:
默认初始化
C++ 中的内置类型,如 int、float 等默认情况下会被初始化为随机的值。对于未被初始化的类类型对象,默认会调用其默认构造函数进行初始化。若一个变量被定义在函数内,但未被初始化,其值也是未定义的。
下面是一个示例说明:
int main() {
int num1; // 未被初始化的 int 类型
cout << num1 << endl; // 结果不确定
string str; // 未被初始化的 string 类型
cout << str << endl; // 输出为空
return 0;
}
值初始化
对于类类型对象来说,我们可以通过在定义时后跟一对空括号“()”或使用花括号初始化列表“{}”进行值初始化。在使用花括号初始化列表时,如果初始化值的数量少于对象成员的数量,则未显式指定值初始化的成员将被值初始化为类中默认的值,比如 int 类型为 0,string 类型为空字符串。使用花括号初始化列表时,还可以使用等号“=”,如“{1, 2, 3, 4}”等同于“={1, 2, 3, 4}”。
下面是一个示例说明:
class Test {
public:
int num;
string str;
Test() : num(0), str("") {}; // 自定义默认构造函数
};
int main() {
int num = {}; // 等价于 int num = 0; 值初始化
cout << num << endl; // 输出为 0
string str{}; // 等价于 string str = ""; 值初始化
cout << str << endl; // 输出为空字符串
Test t{}; // 使用初值列表进行值初始化
cout << t.num << " " << t.str << endl; // 输出结果为 0 和空字符串
return 0;
}
直接初始化
直接初始化是显式地调用类的构造函数来初始化对象。同时,直接初始化也可以传递参数,来调用有参构造函数。经由直接初始化而创建的对象具备类构造函数所指定的值。
下面是一个示例说明:
class Test {
public:
Test() {} // 默认构造函数
Test(int i, int j) : num(i), count(j) {} // 有参构造函数
int num;
int count;
};
int main() {
Test t1; // 默认构造函数
cout << t1.num << " " << t1.count << endl; // 输出结果为 0 0
Test t2(10, 20); // 调用有参构造函数
cout << t2.num << " " << t2.count << endl; // 输出结果为 10 20
return 0;
}
总结
以上就是C++中对象初始化操作代码的完整攻略,有默认初始化、值初始化和直接初始化三种方式。还有需要注意的是,如果类没有定义构造函数,那么C++编译器会生成一个默认的构造函数。如果类中定义了有参构造函数,并且没有定义默认构造函数,则需要使用直接初始化方式来进行初始化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的对象初始化操作代码 - Python技术站