特集PC技術

C++言語学習録

 

第2回 オブジェクト指向の復習

C++はオブジェクト指向プログラミング言語ですから、クラスから先にやるべきかなと。
制御文とかそういう種類はあんまり他の言語とも変わらないはずですし。
後、最初にC++を見たときにクラスの宣言とか定義とかわかりにくかった記憶がある。

目次

[1] とにかくクラスを書いてみよう。

Java言語入門(ほぷしぃ)で使ったのと同じようなクラスを作ってみることにしました。
そうすることで他言語との比較もできて便利かと。

#include <iostream>
#include <string>
using namespace std;
// クラス定義 class クラス名
class Human {

private:
    // string型はc++の標準ではないので stringヘッダをincludeする。
    string name;
    int age;

public:
    // コンストラクタ(クラス名と同じ)
    // クラスをインスタンス化したときに呼ばれるもの
    Human(string tmp_name, int tmp_age);

    // デストラクタ(クラス名の先頭に~をつける)
    // インスタンスを廃棄するときによばれるもの
    ~Human();

    // メソッド 戻り値 関数名(引数)
    void introduce();
};

[2] 続いて、メソッドの詳細を作ろう。

上記のソースコードはクラスの定義をしただけなので、実際に行う処理を記載します。
上記のソースコードの続きから記載します。

// コンストラクタ
Human::Human(string tmp_name, int tmp_age){
    name = tmp_name;
    age = tmp_age;
}
// デストラクタ
Human::~Human(){
    
}
// メソッド
// 戻り値 クラス名::メソッド名(引数...)
void Human::introduce(){
    cout << "name is " << name << " age is " << age << endl;
}

Javaのように[this.name = name]という風に書いたらエラーになった。
C++は引数と変数で同じ変数名を使えないのかな。

[3] 最後に、クラスを呼び出してみよう。

定義したクラスを実際に使ってみました。

int main() {
    Human *human;
    // インスタンス化
    human = new Human("hopsii",10);
    // メソッドの実行
    human->introduce();

    // メンバ変数にアクセスするときは、human->name という感じに書く。
    return 0;
}

プログラムの準備ができましたら、実行します。

user_name@c_study:~/workspace $ g++ hello-cpp-world.cc -o helloCpp
user_name@c_study:~/workspace $ ./helloCpp
name is hopsii age is 10
user_name@c_study:~/workspace $

無事に動かすところまで確認することができました。
Cloud9 IDEで出力する文字列に日本語を入れたら正しく表示できなかった。
んー、なんかいい方法はないだろうか。

[4] 更新履歴

日付 詳細
2014/10/09 新規作成

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1889

サイト内検索

twitterTwitter

最新ブログ記事

2014年10月16日

C++言語学習録

第3回 ファイルを分割してみよう

2014年10月09日

C++言語学習録

第2回 オブジェクト指向の復習

2014年10月02日

C++言語学習録

第1回 C++の開発環境を整える

2014年09月25日

Swiftを試してみようなう。

第4回 Swiftでクラスを使うなう。

2014年09月18日

Swiftを試してみようなう。

第3回 Swiftで関数を使う。

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る