0

这个问题可能更多地是关于 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_AlternativeB_Alternative

A下面包括一个示例。这只是一个例子。

class A {
public:
    A(int num) : num_(num) {}
private:
    int num_;
};
4

0 回答 0