gpt4 book ai didi

c++ - 我应该对类中的所有值使用 setValues 吗?

转载 作者:行者123 更新时间:2023-11-27 23:17:32 25 4
gpt4 key购买 nike

在面向对象编程中,使用构造函数或使用类似 setValues 的方法之间是否存在差异。我不应该使用 setValues 方法吗?

class Controller{
public:
Controller();
Controller(int,int);
setControllerValues(int,int);
private:
int transactionValue;
int transactionId;
};

最佳答案

您应该始终使用 member initializer list 来初始化你的类成员。

注意我说的是initialize,意思是在构建的时候提供一个值。除非您这样做,否则这些成员将具有不确定值,直到您显式调用 set 方法以显式为成员设置特定值。

Is there differences between using constructor or using setValues like method for that.

是的,有区别。 C++ 为您提供了初始化 类成员的机会,这是通过成员初始化列表实现的。如果您不在成员初始化器列表中初始化成员,则成员将保持未初始化状态,即它们具有不确定的值。人们永远不会希望成员的状态是不确定的。

当您使用 set 方法时,您实际上是在分配而不是初始化成员。两者有区别:

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

关于c++ - 我应该对类中的所有值使用 setValues 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15518815/

25 4 0