C++初始化列表学习
什么是初始化列表?
初始化列表是C++中初始化class或者struct中成员变量的一种机制。使用初始化列表可以避免一些初始化过程中的不必要的计算和对象复制。
为什么要使用初始化列表?
在C++中,每个class或者struct中的变量都有一个默认的构造函数,如果没有定义其他的构造函数,编译器会自动使该构造函数有效。在某些情况下,简单的调用默认构造函数将不足以给对象或者变量正确的赋值。为了给对象/变量正确的赋值,代码中需要使用成员初始化列表来初始化变量。 这建立在以下两个前提条件的基础上:
1. 变量的const属性
2. 变量的引用类型
初始化列表示例
以下是一些例子,演示在类中如何使用初始化列表。
例子1:
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(int a, int b) : x(a), y(b) {
cout << "MyClass constructor called" << endl;
};
private:
int x;
int y;
};
int main() {
MyClass test(3, 4);
return 0;
}
输出结果为:MyClass constructor called.
在本例子中,MyClass的构造函数使用MEMBER_INITIALIZE_LIST将x和y初始化。这样做的好处是对变量进行默认初始化。
例子2:
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(int a, int b);
private:
int x;
int y;
};
MyClass::MyClass(int a, int b) : x(a), y(b) {
cout << "MyClass constructor called" << endl;
}
int main() {
MyClass test(3, 4);
return 0;
}
输出结果为:MyClass constructor called.
本例中,构造函数设置x等于a,将y设置为b,并在构造函数中输出消息。
如何使用初始化列表
使用初始化列表的一般语法如下:
function_name::function_name (data_type parameter1, data_type parameter2, ...): member1(a), member2(b), member3(c)
{
//constructor body
}
初始化列表中,将构造函数参数和成员变量或基类初始化放在一起,用逗号分隔。如果类中有多个成员变量,只需要用逗号分隔它们即可。
结论
在C++中,组合类和继承类的构造函数中,初始化列表是一种很好的使用方式。 它减少了许多没有必要的计算和对象拷贝。 在代码中,使用初始化列表可以有效地提高对C++类和结构的理解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++初始化列表学习 - Python技术站