ホームに戻る
クラスの初期化
#include <iostream>
#include <string>
/*
*
* クラスの初期化
*
* クラスの初期化には以下のような方法がある。
* もちろんメンバ関数を介して代入しても問題は無い。
*
* クラスはディフォルトコンストラクタを1つ持つ。
* 通常は A() などであり省略が可能である。
* ただし A(int n = 1) など引数に値が与えられると、
* ディフォルトコンストラクタとして定義できる。
* この場合 A() と A(int n = 1) は同時に定義できない。
*
*/
class A{
std::string name;
int num;
public:
A() : name("default"), num(0){}; // 値を初期化
A(int n) : name("default"), num(n){}; // 値を初期化
//A(int n = 1) : name("default"), num(n){}; // A() と同時に定義できない
A(std::string , int = 100);
std::string getName() const {return name;}
int getNum() const {return num;}
};
A::A(std::string s, int n){
name = s; // コンストラクタ内の代入であり初期化でない
num = n; // コンストラクタ内の代入であり初期化でない
}
using namespace std;
int main(){
A a1;
A a2(50);
A a3("a");
A a4("b", 150);
cout << a1.getName() << a1.getNum() << endl;
cout << a2.getName() << a2.getNum() << endl;
cout << a3.getName() << a3.getNum() << endl;
cout << a4.getName() << a4.getNum() << endl;
return 0;
}
結果
default0
default50
a100
b150