ユキのワクワク日記

ユキのワクワク日記

PR

サイド自由欄


・このブログの目的
自分の作った物のメモや、他の人にもお勧めしたいもの、自分が詰まって大変だったところなどについて。
また、自分が学習した内容を書き記すことにより、自分のメモ及び、他の人にも良いものを知ってもらいたいと思い、書いています。

※mbed、STM32の記事は下記サイトに移行しました。
Project_OKIはてなブログ


内容
・ビジネス書籍のまとめ。
・見た漫画、アニメ、動画などについて
・ものづくり
・副業について

こちらもよかったらお願いします。
私のインスタグラムです
私のtwitterです

プロフィール

yuki9580

yuki9580

カレンダー

カテゴリ

カテゴリ未分類

(58)

電子工作

(25)

C言語勉強メモ

(1)

C++勉強メモ

(12)

C言語(組み込み):STM32(mbed)

(0)

少女漫画

(6)

英語

(18)

アニメ

(4)

料理

(11)

漫画!

(8)

食べに行こう

(4)

見たyoutube

(14)

読書

(24)

各種イベント参加

(0)

習慣日記

(32)

副業(FX)

(9)

FX(言葉の意味)

(8)

ライフコンシェルジュに相談してみた

(4)

ふるさと納税

(0)

暗号資産関連

(2)

遊戯王

(1)

目標

(14)

AI関連

(3)

日記

(3)

キーワードサーチ

▼キーワード検索

2022.05.21
XML
カテゴリ: C++勉強メモ
​​​​​​​​​

ポリフォーリズムとは


1.本日の内容

 (1) ポリフォーリズムについて理解する。

2.内容 

(1) ポリフォーリズムとは
  ・同じ名前の関数を複数定義して、状況に応じて呼び出す関数を使い分ける仕組みのこと。

(2) C++でのポリフォーリズムの実装
  ポリモーリズムを表現する方法として下記2つがある。
  ・オーバーロード
   同一クラス内でも「引数の型」もしくは「引数の数」を変え、
   同じ名前の関数を複数定義出来る。
  ・オーバーライド(override)
   親クラスと子クラスに同じ名前、同じ戻り値、同じ引数を取るメンバ関数が存在し、
   子クラスをでその関数を使用する場合、子クラスのメンバ関数が実行される。
  (子クラスのメンバ関数は、親クラスのメンバ関数をオーバーライドするという)

 (3)  virtual修飾子と仮想関数
   仮想関数:
   ・C++では、継承元のクラス(親クラス)から
    継承先のクラス(子クラス)のメンバ関数を呼び出せない。
   ・親クラスで、子クラスのメンバ関数を呼び出すには、仮想関数を使用する。
   ・仮想関数を作成するのに、virtual修飾子を使用する。

(4)  プログラムで確認


//main.cppの作成
//ーーーーーーーープログラム開始ーーーーーーーーーーー
//メイン.cppの作成
 #include <iostream>
 #include "oya.h"
 #include "ko.h"
 using namespace std;
 int main(int argc,char** argv){
     //親クラスのインスタンス作成
     Oya* pOya;
     Oya* pKo;
     pOya=new Oya();
     pKo=new Ko();
     //子クラスのインスタンス作成
     Ko* pKo2 = new Ko();    
     //親クラス関数実行
     //virtual修飾子あり
     pOya->oyaSing();
     pKo->oyaSing();
     //pKo->koJump();    //コメントを外すとエラー
     //virtual修飾子なし
     pOya->oyaRun();
     pKo->oyaRun();
     //子クラスの関数実行
     pKo2->oyaSing();
     pKo2->oyaRun();
     pKo2->koJump();
     return 0;
 }
//ーーーーーーーープログラム終了ーーーーーーーーーーー


//oya.hの作成
 //プログラム内容:親クラスの宣言、作成
//ーーーーーーーープログラム開始ーーーーーーーーーーー
//oya.hの作成
 #ifndef _OYA_H_
 #define _OYA_H_
 //親クラスの作成
 class Oya{
 public:
     //関数oyaSingを宣言
     //「歌う」を表示する
     virtual void oyaSing();   
     //関数OyaRunを宣言
     //「走る」を表示する。
     void oyaRun();
 };
 #endif //oya.h終了
//ーーーーーーーープログラム終了ーーーーーーーーーーー


//oya.cppの作成
 //プログラム内容:親クラスの処理を実装
//ーーーーーーーープログラム開始ーーーーーーーーーーー
//oya.cppの作成
 #include <iostream>
 #include "oya.h"
 using namespace std;
 //関数の作成
 void Oya::oyaSing(){
     cout<<"歌う(親)"<<endl;
 }
 void Oya::oyaRun(){
     cout<<"走る(親)"<<endl;
 }
//ーーーーーーーープログラム終了ーーーーーーーーーーー


//ko.hの作成
 //プログラム内容:子クラスの宣言、作成
//ーーーーーーーープログラム開始ーーーーーーーーーーー
//子クラスのヘッダ
 //ko.h作成
 #ifndef _KO_H_
 #define _KO_H_
 //oyaクラスのインクルード
 #include "oya.h"
 //子クラスの作成
 class Ko:public Oya {
 public:
     //関数oyaSingを宣言
     //「歌う」を表示する。
     void oyaSing();
     //関数oyaRunを宣言
     //「走る」を表示する。
     void oyaRun();
     void koJump();
 };
 #endif  //ko.h終了
 //ーーーーーーーープログラム終了ーーーーーーーーーーー


//ko.cppの作成
 //プログラム内容:子クラスの処理を実装
//ーーーーーーーープログラム開始ーーーーーーーーーーー
#include <iostream>
 #include "ko.h"
 using namespace std;
 //関数の作成
 void Ko::oyaSing(){
     cout<< "歌う(子)"<<endl;
 }
 void Ko::oyaRun(){
     cout<< "走る(子)"<<endl;
 }
 void Ko::koJump(){
     cout<<"ジャンプ(子)"<<endl;
 }
//ーーーーーーーープログラム終了ーーーーーーーーーーー

実行結果:​ https://paiza.io/projects/etEkUIqkyBeG0BZzS7WC-w?language=cpp ​​​​

(5) C++基礎学習終了について
  C++の基礎学習は、今回のポリフォーリズムで終わりになります。
  次回からは、C++ Builderの使い方、C++ Builderでアプリを作りながらの学習になります。
  ここまでの内容は「 1週間でC++の基礎が学べる本 (1週間プログラミング) 」の
  5日目までの内容を、自分が必要な部分を学習してきました。

  その為、「 1週間でC++の基礎が学べる本 (1週間プログラミング) 」では、
  もっと詳しい内容が載してあります。
  また、6日目、7日目の内容には
   ・テンプレートとSTL(スタンダードテンポラリライブラリ)について
     →C++で用意されているライブラリの使い方(vectorやlistなど)
     →テンプレートとは
    ・覚えておきたい基礎知識
     →参照渡し
     →クラスの相互参照
     →stringクラスの応用
     →インターフェースについて
     →オーバーロードについて 
  などの、C++を扱う上で、重要な項目があります。

 もしもC++を学習したい方が居ましたら、是非自分の手で取って、学習することをお勧めします。
 ここで、6日目、7日目の内容に振れないのは、下記3点の理由からです。
 ・誤った情報があるかもしれないので、自分で書籍を買って、しっかり確認、学習してほしい。
 ・自分が必要な知識が5日目までで十分で、C++ Builderを先にやる必要がある。
 ・一通り確認しているので、必要になったら、再度まとめるつもり。
以上、ここまで読んでくださりありがとうございました。

3.関連記事

・​ C++勉強メモ1(Hellow worldの表示)
・​
C++勉強メモ2(数値、文字の入出力)
・C++勉強メモ3(名前空間とは)  
・​
C++勉強メモ4(ポインタ)
・C++勉強メモ5(クラス1)

4.参考にしている本


​​​​​​​​





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2022.05.21 08:00:12
コメント(0) | コメントを書く
[C++勉強メモ] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: