私はC++を習得しており、メンバ変数を宣言することなくコンストラクタが初期化されるこのコードを知りました。また、オブジェクトはパラメータなしで作成されます。代わりにデフォルトのコンストラクタを呼び出すのではないでしょうか?クラスのオブジェクトは、メンバ変数を定義せずに初期化されます
また、このクラスが継承されている場合、派生クラスはxとyにアクセスできますか?
//プログラム例
#include <iostream>
#include <string>
class game
{
public:
game(int x = 0, int y = 100); // Do they get defined as members?
int z;
};
game::game(int x, int y) : z(x)
{
std::cout << x;
}
int main()
{
game g; // passed w/o parameters.
return 0;
}
彼らは、派生クラスから呼び出された基底クラスのコンストラクタで、xとyにアクセスすることができます。 –
コンストラクタのすべての引数にデフォルトの引数を与えるので、引数を指定せずに呼び出すことができるため、コンストラクタはデフォルトのコンストラクタになります。 –
そして、どんな関数でも、引数はローカル変数として振る舞い、関数が返ったらスコープから外れます。それはコンストラクタにとっても同様です。コンストラクタの引数もコンストラクタのローカル変数も、そのクラスのメンバ変数にはなりません。 –