可能重复:
常量正确性是否为编译器提供了更多优化空间?
在过去的几个星期里,我开发了一个东西,const
如果可能的话,让我的所有非静态成员都成为非静态成员,以避免意外的编程错误。然而,这种做法提供了一些巨大的缺点,特别是对于实体对象,因为例如,如果他们选择直接聚合这样的实体对象而不是使用指针,那么没有人将能够再调用赋值运算符。
我的问题是,这种const
成员哲学是否甚至提供任何编译器优化奖励。
class User {
public:
User(const std::string &, const std::vector<unsigned char> &);
~User();
const std::string &getName() const;
const std::vector<unsigned char> &getPasswordHash() const;
private:
std::string name;
std::vector<unsigned char> passwordHash;
};
如果 this class
' 成员是,它会为我的编译器提供任何重要的优化可能性const
吗?鉴于其他类通常会聚合非常量User
对象,但几乎我所有的算法都会接受const User &
?
那么,成员们是否对现有的心态const
提供了任何重大的优化机会?const User &
它会证明使用const User *
聚合并在更改时重建对象而不是使用赋值运算符是合理的吗?
感谢您的快速评论!