c++ - 如何避免 C++ 派生类中基类成员的重复拷贝

标签 c++ inheritance static macros constants

在我的项目中,有一个基类和三个不同的派生类。我在基类中有一些写为 const int 的宏变量。所有派生成员都将访问这些成员并看到相同的值。因为它是一个常量,并且不会改变,所以维护 3 个不同的值将浪费空间。因此,我想要一种方法来维护基类 const 成员的一个拷贝,以便所有派生类都使用相同的成员。

例子

 //Base.hpp
 Class Base {

       const int ZER0;
       const int ONE;
 };

 //Derived1.hpp
 class Derived1:public Base {
      int some_method1(); 
 };

  //Derived1.cpp

  int Derived1::some_method1() {

    int value = ZERO;
  }

 //Derived2.hpp

 class Derived2:public Base {
    int some_method2();
 };

//Derived2.cpp

int Derived2::some_method2() {
   int value = ONE;
}

//main.cpp

Derived1 d1;
d1->some_method1();

Derived d2;
d2->some_method2();

//这两种方法中的值都是常量,但零和一仍然会有不同的空间。有没有办法让我只保留一份拷贝?我可以想到静态变量。在类内部使用静态是否可以,我在哪里初始化静态变量。请指教。

PS:这个问题可能是重复的,但是我找不到类似的词,如果你觉得是这样,请随时重定向到相应的文章/问题;

最佳答案

如果我没理解错的话,enum 会满足您的需求吗?

class Base
{
    enum 
    {
        ZERO,
        ONE
    };
};

关于c++ - 如何避免 C++ 派生类中基类成员的重复拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055391/

相关文章:

android - 静态类中的异步任务

c - C 中的静态、定义和常量

c++ - 没有可调用的匹配函数

c++ - typedef 中的 typedef

javascript - Object 和 String 原型(prototype)不是定义字符串的原型(prototype)吗?

java - 即使子类已经定义了构造函数,父类是否也总是需要一个默认的或无参数的构造函数?

c++ - 自动返回类型扣除是否适用于 main?

c++ - cpp 中的奇怪作用域

android - Android View 的 ID 可以在多个 Activity 之间安全共享吗?

c++ - 每次更改文本时,CStatic 都不会失效