私は継承を理解しようとしていますが、2つのクラスを構築するのに助けが必要です。最初のものはAと呼ばれ、2番目のものはBと呼ばれます。Aには1つのプライベート整数値「m_a」があります。2つのコンストラクターがあります。デフォルトのコンストラクターはm_aを5に設定し、もう1つは引数としてmと呼ばれる整数を取り、m_aの値をmに設定します。メンバー関数に関しては、2つあります。最初のものはm_aを返します。2つ目は「HellofromA!」と印刷されます。Bに移りましょう。Bにはプライベート文字列m_sがあります。m_sを「asd」または空の文字列以外に設定するデフォルトのコンストラクターと、引数として文字列を取り、m_sをその値に設定するコンストラクター。関数に関する限り、最初にBにはm_sを返す関数があります。プリントと同じ名前の機能があります」
それらは必要なクラスです。次の質問があります(以下に作成したものを投稿します)。最初に、基本クラスからプライベートデータファイルにアクセスする方法はありますか。たとえば、m_s変数を取得し、それを別の変数に追加して、それらの合計を出力するとします。それは可能ですか?(そしてどうやって)
また、デフォルトとは異なるコンストラクターを使用してクラスを作成しようとすると、エラーが発生します。私は明らかに何か間違ったことをしています。問題は何ですか。
今のところ、これらはすべて私の質問だと思うので、ソースコードを投稿する時が来ました。
#include <iostream>
#include <string>
using namespace std;
class A
{
private:
int m_a;
public:
A(){m_a = 5;}
A(int m)
{
m_a = m;
}
void pm()
{
cout << "Hello from A!" << endl;
}
int get_a()
{
return m_a;
}
};
class B : A
{
private :
string m_s;
public:
B(){m_s = "asd";}
B(string s)
{
m_s = s;
}
void pm()
{
cout << "Hello from B!" << endl;
}
string get_s()
{
return m_s;
}
};
int main()
{
A a(10);
a.pm();
cout << a.get_a() << endl;
B b("asd");
b.pm();
cout << b.get_s() << endl;
cout << b.get_a() << endl;
return 0;
}