質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

3541閲覧

c++の継承についての質問です

py_beginner1

総合スコア5

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/06/02 05:54

編集2020/06/02 07:03

一週間で身に付くc++言語というサイトでc++の勉強を始めたのですが
継承のパートの練習問題が全く分かりません.
お力添えいただけると幸いです.

問い
以下のプログラムに、基本計算クラスFundClacを継承した新計算クラスNewCalcを指定されたとおりの仕様で追加し、期待された実行結果通りにプログラムが動くように改造しなさい。このさい、必要があれば、FundCalcクラスの必要な部分を改造しなさい。
NewCalcクラスのヘッダファイルは、newcalc.h、ソースファイルは、newcalc.cppとすること。

期待される実行結果
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5

現在の状況
fundcalc.h

c++

1#ifndef _FUNDCALC_H_ 2#define _FUNDCALC_H_ 3 4class FundCalc{ 5private: 6 double m_number1; // 一つ目の数 7 double m_number2; // 二つ目の数 8public: 9 // コンストラクタ 10 FundCalc(); 11 // 一つ目の数を設定 12 void setNumber1(double number); 13 // 二つ目の数を設定 14 void setNumber2(double number); 15 // 一つ目の数を設定 16 double getNumber1(); 17 // 二つ目の数を設定 18 double getNumber2(); 19 // 二つの数の和を出力 20 double add(); 21 // 二つの数の差を出力 22 double sub(); 23}; 24 25#endif // _FUNDCALC_H_

fundcalc.cpp

c++

1#include "fundcalc.h" 2 3FundCalc::FundCalc() : m_number1(0), m_number2(0) 4{ 5} 6// 一つ目の数を設定 7void FundCalc::setNumber1(double number) 8{ 9 m_number1 = number; 10} 11// 二つ目の数を設定 12void FundCalc::setNumber2(double number) 13{ 14 m_number2 = number; 15} 16// 一つ目の数を設定 17double FundCalc::getNumber1() 18{ 19 return m_number1; 20} 21// 二つ目の数を設定 22double FundCalc::getNumber2() 23{ 24 return m_number2; 25} 26// 二つの数の和を出力 27double FundCalc::add() 28{ 29 return m_number1 + m_number2; 30} 31// 二つの数の差を出力 32double FundCalc::sub() 33{ 34 return m_number1 - m_number2; 35}

main.cpp

c++

1#include <iostream> 2#include "newcalc.h" 3 4using namespace std; 5 6int main(){ 7 NewCalc n; 8 n.setNumber1(10); // 一つ目の数を設定 9 n.setNumber2(2); // 二つ目の数を設定 10 cout << n.getNumber1() << " + " << n.getNumber2() << " = " << n.add() << endl; 11 cout << n.getNumber1() << " - " << n.getNumber2() << " = " << n.sub() << endl; 12 cout << n.getNumber1() << " * " << n.getNumber2() << " = " << n.mul() << endl; 13 cout << n.getNumber1() << " / " << n.getNumber2() << " = " << n.div() << endl; 14 15 return 0; 16}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

必要があれば、FundCalcクラスの必要な部分を改造しなさい

とのこと…… → あえて改造を施す.

  • FundCalcに必要なメソッドを追加

C++

1class FundCalc{ 2 //以下を追加 3public: 4 virtual ~FundCalc(){} 5private: 6 virtual void Update(){} 7 8 //以降は同一 9private: 10 double m_number1; 11 double m_number2; 12public: 13 FundCalc(); 14 void setNumber1(double number); 15 void setNumber2(double number); 16 double getNumber1(); 17 double getNumber2(); 18 double add(); 19 double sub(); 20};
  • FundCalcの既存メソッドの実装変更点

C++

1FundCalc::FundCalc() : m_number1(0), m_number2(0) 2{ Update(); } //Update()の呼び出しを追加 3 4// 一つ目の数を設定 5void FundCalc::setNumber1(double number) 6{ 7 m_number1 = number; 8 Update(); //Update()の呼び出しを追加 9} 10// 二つ目の数を設定 11void FundCalc::setNumber2(double number) 12{ 13 m_number2 = number; 14 Update(); //Update()の呼び出しを追加 15}
  • 継承したクラス NewCalc

C++

1class NewCalc : public FundCalc { 2public: 3 double mul() const { return m_Mul; } 4 double div() const { return m_Div; } 5 virtual void Update() override 6 { 7 double n1 = getNumber1(), n2 = getNumber2(); 8 m_Mul = n1 * n2; 9 m_Div = n1 / n2; 10 } 11private: 12 double m_Mul; 13 double m_Div; 14};

投稿2020/06/02 08:00

fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

newcalc.h:

C++

1#ifndef NEWCALC_H__ 2#define NEWCALC_H__ 3 4#include "fundcalc.h" 5 6class NewCalc : public FundCalc { 7public: 8 double mul(); 9 double div(); 10}; 11#endif

newcalc.cpp:

C++

1#include "newcalc.h" 2 3double NewCalc::mul() { return getNumber1() * getNumber2(); } 4double NewCalc::div() { return getNumber1() / getNumber2(); }

投稿2020/06/02 06:54

編集2020/06/02 14:30
episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

py_beginner1

2020/06/02 07:23

これはnewcalc.hファイルとして扱えば良いですか?
episteme

2020/06/02 07:26

訊く前にやってみてはいかがでしょうか?
fana

2020/06/02 07:40

ファイル名の指定があるので,FundCalcと同様に宣言と実装を.hと.cppとに書け という意図であろうとは思います.
py_beginner1

2020/06/02 08:00

そうですね. そこの部分が何回試しても分からないです
episteme

2020/06/02 15:10 編集

なにが分らんのかわからんが... .h/.cppに分けてみた。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問