gpt4 book ai didi

c++ - 构造函数的哪种方式最好?

转载 作者:太空狗 更新时间:2023-10-29 19:39:34 24 4
gpt4 key购买 nike

构造类有两种方式:

  class Cell{
public:
Cell(int cellID, int nx);
~Cell();
private:
int cellID_;
int nx;
};

第一种方式:

  Cell::Cell(int cellID, int nx)
: cellID_(cellID), nx_(nx){}

第二种方式:

  Cell::Cell(int cellID, int nx){init(cellID, nx)}

void Cell::init(int cellID, int nx){
cellID_ = cellID;
nx_ = nx;
}

最佳答案

性能:

第一个是最好的,因为它初始化真正意义上的对象,不像第二种方法分配已经初始化的对象。

请注意,使用第二种方法时会有一点开销:

如您所见,后者在创建和分配时会产生额外的开销,这对于用户定义的类来说可能相当可观。

Cost of Member Initialization = Object Construction 
Cost of Member Assignment = Object Construction + Assignment

如果成员是内置/POD 数据类型,则没有开销,但如果成员是非 POD 类型,则开销很大。

必要性:

请注意,在某些情况下您将被迫使用成员初始化列表:

  • 你的类(class)有一个引用成员
  • 你的类有一个非静态常量成员

此类成员不能被赋值,但必须在成员初始化列表中初始化。


鉴于上述作为实践,第一种方法总是可取的。

关于c++ - 构造函数的哪种方式最好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13794790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com