21xrx.com
2024-11-22 07:28:26 Friday
登录
文章检索 我的文章 写文章
C++对象初始化方法
2023-06-23 09:20:26 深夜i     --     --
C++ 对象 初始化 构造函数 默认构造函数

在C++中,对象的初始化是非常重要的。一个对象如果没有经过正确的初始化,可能会导致程序出现未定义的行为。因此,了解C++对象初始化的方法是非常必要的。

在C++中,有三种常见的对象初始化方式:默认初始化、值初始化和列表初始化。

1. 默认初始化

默认初始化:使用无参构造函数完成初始化,对于基本类型,不会被初始化也不会有默认值。

对于类的对象,默认初始化就是调用其默认构造函数。如果没有定义默认构造函数,则该类的对象不能进行默认初始化。

2. 值初始化

如果对一个对象进行了值初始化,那么该对象会被初始化为相应类型的默认值。对于基本类型,值初始化会把变量初始化为0;对于类的对象,则会调用其默认构造函数完成初始化。

例如:

int b; // b未被初始化,其值是未定义的

int a = 0; // a被值初始化为0

class A {

public:

  A()

    cout << "A's constructor" << endl;

};

A obj; // obj调用默认构造函数完成初始化

3. 列表初始化

列表初始化可以在对象定义时使用初始化列表,或者在构造函数中使用初始化列表进行初始化。

例如:

int a{42}; // 对a进行列表初始化,其值为42

class A {

public:

  A(int a)

    cout << "call A's constructor with " << a << endl;

};

A obj{42}; // obj调用A(int)构造函数完成初始化

当类的构造函数使用了初始化列表时,就可以在构造函数中初始化类成员变量。例如:

class A {

public:

  A(int a) : var(a)

    cout << "call A's constructor with " << a << endl;

private:

  int var;

};

A obj{42}; // obj调用A(int)构造函数完成初始化,这里会初始化var为42

总结

默认初始化就是通过调用默认构造函数完成的,如果类没有定义默认构造函数就会导致编译错误;

值初始化可以初始化基本类型和自定义类型,但是不会调用构造函数;

列表初始化可以让类成员变量在构造函数中完成初始化。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复