アフィリエイト広告を利用しています

広告

posted by fanblog

2018年01月07日

《その223》 クラスオブジェクトの初期化(初歩的 (・・。)ゞ


 クラスオブジェクトの初期化の際の記述方法について、再確認してみました。
初歩的な内容ですみません。
自分の中で、ちょっとあいまいになっていたことがあって・・・(´・ω・`) ちょっと恥ずかしい話ですが、「プログラムの (3) の書き方だと代入演算子が呼ばれたりしないか」と不安になってしまったんです。
でも、ちゃんとコピーコンストラクタだけで初期化していることがわかって安心しました。自分の場合、こういう基本的な部分がダメですね。基本がダメなら応用もダメですよね。自信無くします。というか、もともと自信ありません。

(3) を確認したついでに、(6),(7) の確認もしてみました。
(6) の場合の関数 f1 は、オブジェクトを受け取り、オブジェクトを返却します。
(7) の場合の関数 f2 は、参照を受け取り、参照を返却します。
大きいクラスだと、確かに、コスト的に差が出そうですね。

// ------------------------------------
#include <iostream>
using namespace std;

class C {
int n;
public:
C(int x = 0) : n(x) {
cout << "☆ コンストラクタ\n";
}

C(const C& x) {
cout << "◇ コピーコンストラクタ\n";
n = x.n;
}

C& operator=(const C& x) {
cout << "▽ 代入演算子\n";
n = x.n;
return *this;
}
};

C f1(C x) {
cout << " @@@\n";
return x;
}

C& f2(C& x) {
return x;
}

int main() {
cout << "(1) "; C a(100);
cout << "(2) "; C b;
cout << "(3) "; C c = a;
cout << "(4) "; C d(a);
cout << "(5) "; b = a;

cout << "\n(6)\n";
b = f1(a);
cout << "\n(7)\n";
b = f2(a);
}
// ------------------------------------

f08_0007.png


新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/11/10 13:13時点)

新版 明解C 中級編 (明解シリーズ)

新品価格
¥2,916から
(2017/11/10 13:14時点)





この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7167508
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。