注意:
C++ の構造体には関数を含めることができる.
C++ で構造体を使う場合には, 構造体変数を宣言するときに struct キーワードをつける必要なくなった:
struct sample s; /* C 言語のとき struct キーワードが必要 */
sample s; /* C++ では struct キーワードが不要 */
また, これと同様に, enum と union に付いても, C++ ではキーワードを付ける必要なくなった.
CSample はクラスの名前である:
class CSample{
public:
void function(); // メンバ関数 1
int function2(); // メンバ関数 2
private:
int m_num; // メンバ変数 1
char *m_str; // メンバ変数 2
}
クラスの変数を宣言する:
CSample obj; // CSample クラスの変数を obj に宣言する
[インスタンス化] は [クラスを実体化する] という意味がある. [クラス] はそのままでは単なる [型] にすぎないので, 使うには, 実体化する必要がある.
class1.cpp
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 32 33 | #include <iostream>
// クラス宣言
class CSample{
private:
int m_num;
public:
void set(int num); // m_num に値を設定する
int get(); // m_num に値を取得する
};
void CSample::set(int num){
m_num = num;
}
int CSample::get(){
return m_num;
}
int main(){
CSample obj; // CSample をインスタンス化
int num;
std::cout << "整数を入力してください: " << std::endl;
std::cin >> num;
obj.set(num); // CSample クラスのメンバ変数をセット
std::cout << obj.get() << std::endl; // メンバ変数の値を出力
return 0;
}
|
class1.cpp の実行結果は:
[wtopia cpp.lang]$ g++ -Wall -O2 -o class1 class1.cpp
[wtopia cpp.lang]$ ./class1
整数を入力してください:
20
20
[wtopia cpp.lang]$ g++ -Wall -O2 -o class1 class1.cpp
[wtopia cpp.lang]$ ./class1
整数を入力してください:
40
40