[解決済み] c++の":: "と"->"の違いは何ですか?c++の". "と" ->"の違い [重複].
2023-03-06 14:17:43
質問
というクラスを作成しました。
Kwadrat
. このクラスには、3つの
int
フィールドがあります。私の
開発環境
からフィールドにアクセスすることを示唆しています。
Kwadrat
を経由して作成されたオブジェクトの
::
&
->
という演算子があります。両方の演算子を試してみたところ
->
演算子はオブジェクトフィールドのデータに正常にアクセスすることができましたが、同じことが
->
演算子には当てはまりません。
また、私は
.
演算子はクラスのメンバーにもアクセスします。私は混乱しており、なぜオブジェクトのメンバー &/or メソッドにアクセスするための3つのメンバーがあるのか理解できません。どなたか、この3つの演算子の違いを説明していただけませんか?
1.
->
2.
::
3.
.
#include <iostream>
using namespace std;
class Kwadrat{
public:
int val1,
val2,
val3;
Kwadrat(int val1, int val2, int val3)
{
this->val1 = val1; // Working
this.val2 = val2; // Doesn't Work!
this::val3 = val3; // Doesn't Work!
}
};
int main()
{
Kwadrat* kwadrat = new Kwadrat(1,2,3);
cout<<kwadrat->val1<<endl;
cout<<kwadrat->val2<<endl;
cout<<kwadrat->val3<<endl;
return 0;
}
どのように解決するのですか?
1.
->
を介して、オブジェクトのメンバ変数やメソッドにアクセスするための
pointer
を経由してオブジェクトにアクセスします。
Foo *foo = new Foo();
foo->member_var = 10;
foo->member_func();
2.
.
を経由してオブジェクトのメンバ変数やメソッドにアクセスするためのものです。
instance
Foo foo;
foo.member_var = 10;
foo.member_func();
3.
::
の静的変数やメソッドにアクセスするためのものです。
class/struct
または
namespace
. また、別のスコープから変数や関数にアクセスするために使用することもできます(実際にはクラス、構造体、名前空間がこの場合のスコープとなります)。
int some_val = Foo::static_var;
Foo::static_method();
int max_int = std::numeric_limits<int>::max();
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】デバッグアサーションに失敗しました