c++ - 最佳实践 - 应该在哪里定义类的 const 数据

标签 c++ constants

我写了一个定义和使用 const string 的类 (此字符串定义路径或路径的一部分) 我应该在哪里定义它:在 cpp 或 h 中?它应该是类(class)的一部分吗? 目前此数据仅在内部成员函数中使用。 哪个选项更好?

myClass.h
    // const std::string PATH = "Common\\Data\\input.txt" (1)
    class MyClass
    {
      public:
        // const std::string m_path = "Common\\Data\\input.txt" (2)
      private:
        // const std::string m_path = "Common\\Data\\input.txt" (3)
    }
myClass.cpp
// const std::string PATH = "Common\\Data\\input.txt"(4)

最佳答案

如果这个常量只在一个类中使用,并且它对类的所有实例都是相同的,你可以在unnamed namespace中定义它。在你的 .cpp 文件中:

namespace {
    const std::string PATH = "Common\\Data\\input.txt";
}

这样,它将只能在单个 .cpp 文件中访问,并且如果任何其他文件定义了类似的变量,则在链接期间不会导致任何潜在的名称冲突。

这种方法的主要目标是使用尽可能小的定义范围来减少冗余的隐式依赖。例如,如果此常量发生更改,您的类的客户端将不必重新编译。

关于c++ - 最佳实践 - 应该在哪里定义类的 const 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63326876/

相关文章:

c++ - QT Creator + SQLite。插入速度非常慢

go - Golang 中的运行时常量

c++ - 在复制构造函数中调用 const 引用的方法

php - 定义多个 PHP 常量对性能的影响

c - 放弃函数参数的常量性是未定义行为吗?

C++:std::merge => 用于排序列表

c++ - C++中栈变量的删除

c++ - protected 派生类

c++ - 如何在 Ubuntu 中使用 Eclipse CDT 调试 C++ 静态库?

c - 为什么我们在用于内存测试的模式末尾找到 ULL?