如何解决在成员初始值设定项列表中选择构造函数参数
这个问题可能更多地是关于 CPU/内存而不是 C++ 语言本身。
我在下面提供了一个 class B
。
class B {
public:
B(int num): num_(num),a(num_){}
private:
int num_;
A a;
};
在B
的构造函数中,对象a
被初始化为num_
而不是num
。我本来可以写这个class B_Alternative
。
class B_Alternative {
public:
B_Alternative(int num) : num_(num),a(num) {}
private:
int num_;
A a;
};
哪个更快?我的理解是,答案可能取决于 B
的存储位置。如果 B
在堆栈上,那么编译器很可能会直接从 num_
中检索 B
并且没有速度损失。如果B
在堆上,则需要制作一个栈帧来构造a
,并将num_
的副本移到栈中运行A
的构造函数。然后num_
将移回堆中a
的位置。这将导致 B
的构造函数比 B_Alternative
的构造函数慢,无论 B_Alternative
存储在哪里。
下面包含一个示例 A
。这只是一个例子。
class A {
public:
A(int num) : num_(num) {}
private:
int num_;
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。