ホームページ > バックエンド開発 > C++ > C クラスで静的文字列変数を適切に初期化するにはどうすればよいですか?

C クラスで静的文字列変数を適切に初期化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-08 17:45:12
オリジナル
557 人が閲覧しました

How to Properly Initialize Static String Variables in C   Classes?

C クラスでの静的文字列の初期化

クラス内でメンバー関数と変数を宣言する場合、スコープとアクセシビリティが重要な考慮事項になります。一部のメンバー関数がクラス オブジェクトに直接アクセスしていない状況が発生し、それらを静的にすることにした場合は、アクセスする変数の宣言も変更する必要がある場合があります。

問題: 初期化静的文字列変数

内に以下のような文字列変数がある場合class:

string RE_ANY = "([^\n]*)";
string RE_ANY_RELUCTANT = "([^\n]*?)";
ログイン後にコピー

静的 const 変数にすると、変更されないままになりますが、初期化で問題が発生する可能性があります。コンパイラは、静的定数整数変数はクラス内でのみ初期化できると警告する場合があります。

解決策: 外部初期化

回避策として、これらの静的文字列変数を初期化できます。ソースファイルのクラスの外にあります。例:

// Within the class
class Thing {
    static string RE_ANY;
    static string RE_ANY_RELUCTANT;
};

// In a source file
string Thing::RE_ANY = "([^\n]*)";
string Thing::RE_ANY_RELUCTANT = "([^\n]*?)";
ログイン後にコピー

注意: static 関数と Const 関数の区別

これらの文字列にアクセスするメンバー関数を static にしないでください。クラスメンバーにアクセスする必要があります。代わりに、クラス メンバーを変更できないように、関数を const 関数にすることを検討してください。これにより、不変性を確保しながら、関数とクラス オブジェクト間に必要な関連付けが維持されます。

以上がC クラスで静的文字列変数を適切に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート