[解決済み] C++で::を使用する
質問
C++を勉強しているのですが、どのような場面で
::
. を使用する必要があることは知っています。
std::
の前にある
cout
と
cin
. の内部は、このような意味なのでしょうか?
iostream
という名前空間を作成し、このファイルを作成しました。
std
という関数があります。
cin
と
cout
という名前空間に
std
? と同じファイルにない新しいクラスを作成したところ
main()
を追加する必要があります。
::
.
例えば、私が
class
という
A
というのは、なぜ
A::
は、名前空間に入れていないにもかかわらず、自分が作った関数の前にあるのですか?例えば
void A::printStuff(){}
. で関数を作ると
main
なぜ
main::printStuf{}
?
私の質問はおそらく混乱していると思いますが、どなたか助けていただけませんか?
どのように解決するのですか?
については、かなり正しいです。
cout
と
cin
. これらのオブジェクトは
std
名前空間を使用します。以下は、C++規格で定義された宣言文です。
ヘッダー
<iostream>
シノプシス#include <ios> #include <streambuf> #include <istream> #include <ostream> namespace std { extern istream cin; extern ostream cout; extern ostream cerr; extern ostream clog; extern wistream wcin; extern wostream wcout; extern wostream wcerr; extern wostream wclog; }
::
が知られています。
スコープ解決演算子
. 名前
cout
と
cin
の中で定義されています。
std
で修飾する必要があります。
std::
.
クラスは名前空間と少し似ていて、クラスの中で宣言された名前はそのクラスに属するという振る舞いをします。例えば
class foo
{
public:
foo();
void bar();
};
という名前のコンストラクタは
foo
は
メンバー
という名前のクラスの
foo
. これらはコンストラクタのため同じ名前になっています。関数
bar
のメンバーでもあります。
foo
.
のメンバーであるため
foo
そのため、クラスの外から参照する場合は、その名前を修飾する必要があります。結局のところ、それらはそのクラスに属しているのです。ですから、もしあなたがコンストラクタを定義して
bar
クラスの外側では、このようにする必要があります。
foo::foo()
{
// Implement the constructor
}
void foo::bar()
{
// Implement bar
}
定義されているためです
外側
というクラスがあります。もし
foo::
のメンバーとしてではなく、グローバルスコープで新しい関数を定義することになります。
foo
. 例えば、これは全く別のものです
bar
:
void bar()
{
// Implement different bar
}
の関数と同じ名前にすることが許されています。
foo
クラスは別のスコープにあるためです。この
bar
はグローバルスコープにありますが、他の
bar
に属していた。
foo
クラスがあります。
関連
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み] C++テンプレート関数定義の.CPPファイルへの格納
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み] 配列のベクトルを扱う正しい方法