変換コンストラクタはふつうのコンストラクタと変わりありません😊
つづき・・・
🌞 🌞 🌞 🌞 🌞 🌞 🌞
クラスSuutiは以下のようになります
👇
class Suuti {
public:
int x;
public:
void suutidisplay();
public:
Suuti(int b);
};
👆
このSuutiのクラス宣言のブロック{}内では
クラスSuutiのコンストラクタである自作関数Suuti(int b)の
クラスSuutiのメンバ関数宣言
Suuti(int b);
が設定されています
クラスSuutiのコンストラクタである自作関数Suuti(int b)の定義を
Suuti::Suuti(int b){
x=b;
}
と設定してみます
それでは
このクラスSuutiのコンストラクタである自作関数Suuti(int b)が用いられた
プログラムを実行してみたいと思います
そのプログラムはこちらです
👇
#include <iostream>
using namespace std;
class Suuti{
public:
int x;
public:
void suutidisplay();
public:
Suuti(int b);
};
void Suuti::suutidisplay() {
cout << x << "\n";
}
Suuti::Suuti(int b) {
x = b;
}
int main() {
Suuti a=1;
a.suutidisplay();
return 0;
}
プログラムの実行結果
1
マックス「
普通の
Suuti a(1);
という記述方法でなく
Suuti a=1;
という記述方法でも
aのクラスSuuti型のオブジェクト宣言を実行し
同時に実行される
クラスSuuti型のオブジェクトaのコンストラクタの引数として
1を代入することができるわけだ
🌞 🌞 🌞 🌞 🌞 🌞 🌞
結局
Suuti a=1;
の実行により
引数として1が渡されたクラスSuuti型のオブジェクトaのコンストラクタが実行され
クラスSuuti型のオブジェクトaのメンバ変数a.xに
a.x=1;
と
1
が
代入されています
この
Suuti a=1;
が実行可能なのは
クラスSuutiのメンバ関数であるコンストラクタが
Suuti(int b)
のように
引数部分を1つもっている場合に限ります
そして
変換コンストラクタの登場です
引数部分を1つもっていることに加えて
クラスのコンストラクタの定義内容が
クラスSuutiのコンストラクタSuuti(int b)の定義内容
x=b;
のように
引数に与えられた数値データを
オブジェクトのメンバ変数に代入するように設定されている
クラスのコンストラクタを
変換コンストラクタ
といいます
🌞 🌞 🌞 🌞 🌞 🌞 🌞
マックス「ふむ
変換コンストラクタといっても
普通のコンストラクタだな
クラスSuutiのメンバ関数であるコンストラクタのメンバ関数宣言が
Suuti(int b);
のように設定されていて
クラスSuutiのメンバ関数であるコンストラクタの定義内容が
Suuti::Suuti(int b) {
x = b;
}
となっているなんて特別でもなんでもないような気が・・・
それに
変換コンストラクタは
演算子のオーバーロード
を可能にする
operator関数の設定などは出てこないので
演算子のオーバーロードとは何の関係もない・・・」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます