哪种方法可以声明一个字符串const更值得推荐?静态全局变量V静态全局类变量
- 是在文件范围声明全局变量。
- 将其声明为全局的类。
该变量将仅用于类成员函数中。我倾向于认为2更好,因为它只针对集体成员职能。
A.cpp
---------------------
static const std::string hello_str = "Hello";
void A::print()
{
std::cout << hello_str;
}
(OR)
A.h
---------------------
class A{
public:
static const std::string hello_str;
void print();
}
A.cpp
---------------------
const std::string A::hello_str = "Hello";
void A::print()
{
std::cout << A::hello_str;
}
编辑-1:
让我说,串hello_str的内容可以更改。例如。每当他对文件进行更改时,该字符串都由开发人员手动更新。
在这种情况下,将变量初始化保存在函数中是否有意义? 用户更新字符串可能并不明确。如果它被全局保存到文件(1)或类(2)中,则其他开发人员可以“识别”&修改此字符串。
鉴于上述用例,你还建议有一个函数返回字符串?或者我可以使用类级别的静态变量(使用私有访问说明符)?
我可以解释“一方有效私密,另一方公开可见”。 - 我认为两者都是公开的。 “我赞成在班级内宣布,但私人。” - 理解这部分,只有成员func访问它,而不是从主(其他类的成员函数) “我发现这更容易维护在事件实现转移。当然,如果cpp中的静态是以某种方式外部实现可访问,那么你可能也想在类中声明它是私有的,这样其他人就无法访问它。“ - 我可以解释这个和/或提供一个例子吗? –
@KingkongJnr这只是一个明显的例子:在#1中,'static'可以被A.cpp中的任何内容访问,而不是前面的内容。如果A.cpp只包含A类的定义,那么它就是我所说的“有效的私人”。可见性和对静态的访问是* restricted *。 C程序员使用它的私有函数/数据是一种常见的方法。例如:'main()'无法访问该静态,除非主要在A.cpp中定义。 – justin
@KingkongJnr'print',声明'private'和foo在这里公开:'class A {\ n public:void foo(); \ n私人:\ n void print(); \ n};' – justin