[解決済み] C++のクラスでメンバ変数に接頭辞を使用する理由
質問
C++のコードの多くは、メンバ変数をマークアップするための構文上の規約を使用しています。一般的な例としては、以下のようなものがあります。
- m_ メンバー名 パブリックメンバの場合 (パブリックメンバが使用される場合)
- メンバー名 プライベートメンバーまたは全メンバーの場合
また、this->.を使って強制しようとする人もいます。 メンバー メンバー変数が使用されるたびに
私の経験では、ほとんどの大規模なコードベースでは、このようなルールを一貫して適用することに失敗しています。
他の言語では、このような慣例ははるかに普及していません。私は、JavaやC#のコードでたまに見かける程度です。RubyやPythonのコードでは見たことがないような気がします。このように、最近の言語では、メンバ変数に特別なマークアップを使わない傾向があるようです。
C++ではこの慣習は今でも有用なのでしょうか、それとも単なる時代錯誤なのでしょうか。特に、ライブラリ間で非常に一貫性のない使われ方をしているからです。他の言語では、メンバープレフィックスがなくても大丈夫だということが証明されているのではないでしょうか?
どうすればいい?
先頭のアンダースコアの使い方に注意が必要です。 単語中の大文字の前のアンダースコアは予約されています。 例えば
_Foo
_L
はすべて予約語ですが
_foo
_l
は不可。 他にも、小文字の前にアンダースコアを付けることができない場合があります。 私の場合、Visual C++ 2005でたまたま_Lが予約されており、その衝突によって予期せぬ結果がもたらされることがわかりました。
ローカル変数をマークアップすることがどれだけ有用か、私は迷っています。
どの識別子が予約されているかについてのリンクはこちらです。 C++の識別子でアンダースコアを使用する場合のルールについて教えてください。
関連
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] 仮想デストラクタはいつ使うのか?
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み】プロパティ名やメソッド名のアンダースコア接頭辞は単なる慣例?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】Enterキーを押して続行する
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] C++の識別子でアンダースコアを使用する場合のルールについて教えてください。