注意:答案是按照特定的顺序给出的,但由于许多用户根据投票而不是给出的时间对答案进行排序,因此这里是答案的索引,它们是最有意义的顺序:
(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)
假设您有以下代码:
int main(int argc, char** argv) {
Foo f;
while (true) {
f.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
Foo的以下两种实现中的哪一种是首选?
解决方案1:
class Foo {
private:
void doIt(Bar& data);
public:
void doSomething() {
Bar _data;
doIt(_data);
}
};
Run Code Online (Sandbox Code Playgroud)
解决方案2:
class Foo {
private:
Bar _data;
void doIt(Bar& data);
public:
void doSomething() {
doIt(_data);
}
};
Run Code Online (Sandbox Code Playgroud)
用简单的英语:如果我有一个类经常被调用的方法,并且这个方法定义了大量的临时数据(复杂类的一个对象,或者大量的简单对象),我应该声明这个数据作为班级的私人成员?
一方面,这将节省在每次调用上构建,初始化和破坏数据所花费的时间,从而提高性能.另一方面,它践踏了"私有成员=对象的状态"原则,并可能使代码更难理解.
答案取决于Bar类的大小/复杂程度吗?声明的对象数量如何?什么时候好处超过了缺点?