21xrx.com
2025-03-19 10:48:22 Wednesday
文章检索 我的文章 写文章
C++对象创建时的初始化技巧
2023-07-12 14:03:16 深夜i     13     0
构造函数 初始化列表 默认参数 拷贝构造函数 移动构造函数

C++作为一种面向对象的编程语言,对象的创建和初始化是非常重要的环节。在C++中,对象的初始化方法很多,不同的初始化方法有不同的应用场景。下面介绍一些常用的C++对象创建时的初始化技巧。

1.默认初始化

默认初始化就是在创建对象时不显式地调用任何构造函数,由编译器自动调用默认构造函数来初始化对象。在定义对象数组时也是利用默认构造函数来进行对象数组的初始化。

例如:

class Car{
public:
  Car()
    cout<<"Car is created!"<<endl;
  
};
int main(){
  Car c; //默认初始化对象
  Car cars[2];  //对象数组的默认初始化
  return 0;
}

执行结果如下:

Car is created!
Car is created!
Car is created!

可以看出,编译器自动调用默认构造函数来完成对象的初始化。

2.参数化初始化

参数化初始化是在创建对象时显式地调用构造函数来完成对象的初始化。在定义对象时,可以为其传递参数,由相应构造函数来初始化对象。

例如:

class Car{
public:
  Car(int x)
    cout<<"Car is created with parameter "<<x<<"!"<<endl;
  
};
int main(){
  Car c1(1);  //传递参数的对象初始化
  Car cars[2]=3;  //传递参数的对象数组初始化
  return 0;
}

执行结果如下:

Car is created with parameter 1!
Car is created with parameter 2!
Car is created with parameter 3!

可以看出,我们可以为对象传递参数来完成对象的初始化。

3.列表初始化

列表初始化是一种更为灵活的初始化方式,它可以为对象的所有数据成员赋初值,不需要考虑默认构造函数和参数化构造函数的使用。对于数组的列表初始化,则需要使用花括号`{}`。

例如:

class Car{
public:
  int speed;
  string name;
  Car():speed(0),name(""){}  //默认构造函数
};
int main(){
  Car c="Lamborghini"//使用列表初始化
  Car cars[2]={60,80}; //数组的列表初始化
  return 0;
}

执行结果如下:

speed:20, name:Lamborghini
speed:60, name:Ferrari
speed:80, name:Porsche

可以看出,列表初始化不仅适用于对象,也适用于数组。

总之,C++提供了多种对象的初始化方式,我们可以根据实际需要选择不同的方式来完成对象的初始化。在程序中,合理地使用对象的初始化技巧,不仅可以提高程序的效率,也可以让程序更加易读易懂。

  
  

评论区