文字列 const を宣言する方法として、どちらがより推奨されますか?
- ファイルスコープでグローバル変数を宣言することです。
- クラスに対してグローバルに宣言します。
変数は、クラス メンバー関数でのみ使用されます。クラスメンバー関数のみに固有であるため、2の方が優れていると感じる傾向があります。
A.cpp
---------------------
static const std::string hello_str = "Hello";
void A::print()
{
std::cout << hello_str;
}
(また)
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)に対してグローバルに保持されている場合、他の開発者はこの文字列を「識別」および変更できます。
上記の使用例を考慮して、文字列を返す関数を使用することをお勧めしますか? または、クラス レベルの静的変数 (プライベート アクセス指定子を使用) を使用できますか?