可能重复:
Does const-correctness give the compiler more room for optimization?C++常量,正确性和const成员
在过去的几个星期,我已经开发出一种东西让我的所有非静态成员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;
};
难道我提供的编译器与任何显著优化的可能性,如果这class
'成员const
?鉴于其他类通常会聚合非常量对象,但几乎所有算法都会接受const User &
?
那么const
成员是否会对已存在的const User &
思路提供任何显着的优化机会?是否有理由使用const User *
聚合并重构对象而不是使用赋值运算符?
感谢您的快速评论!
重复。请记住,您不是使用const来加快速度,而是通过声明intente来减少程序中的错误机会。 – 2012-03-07 09:34:14