rep*_*ant 4 c++ memory optimization static constants
如果我有一个定义多个常量变量的类,那么......
class SomeClass {
public:
SomeClass() : SOME_CONSTANT(20), ANOTHER_CONSTANT(45), ANOTHER_CONSTANT2(25), ANOTHER_CONSTANT2(93) { }
private:
const int SOME_CONSTANT;
const int ANOTHER_CONSTANT;
const int ANOTHER_CONSTANT2;
const int ANOTHER_CONSTANT3;
Run Code Online (Sandbox Code Playgroud)
是否会优化此类的多个实例以指向常量的相同内存?或者我可以通过使每个常量保持静态来节省内存?
如果它们不是静态的,那么不,它们将不会被优化.每个实例都有所有常量的空间.(事实上,我认为甚至不允许编译器以任何方式组合它们.)
如果确实将它们声明为静态,则它们位于全局内存中,而不是在每个实例中.所以是的,它将使用更少的内存.
编辑:
如果你想让它们成为静态常量,它应该这样做:
class SomeClass {
public:
SomeClass(){ }
private:
static const int SOME_CONSTANT;
static const int ANOTHER_CONSTANT;
static const int ANOTHER_CONSTANT2;
static const int ANOTHER_CONSTANT3;
};
const int SomeClass::SOME_CONSTANT = 20;
const int SomeClass::ANOTHER_CONSTANT = 45;
const int SomeClass::ANOTHER_CONSTANT2 = 25;
const int SomeClass::ANOTHER_CONSTANT3 = 93;
Run Code Online (Sandbox Code Playgroud)