シノニム typedef (C++をもう一度)
[履歴] [最終更新] (2016/06/03 22:01:07)

サンプルコード

#include <iostream>
#include <vector>
using namespace std;

// クラス内での使用
class MyClass {
public:
    typedef int MyPublicValueType; // protected, private も可能
    MyClass();

public:
    MyPublicValueType Get() const;

private:
    MyPublicValueType m_val;
};

MyClass::MyClass() {
    m_val = 256;
}

MyClass::MyPublicValueType MyClass::Get() const {
    // ↑どの名前空間の MyPublicValueType であるか不明であるため
    // "MyClass::Show" より左側における "MyClass::" は省略できません。
    return m_val;
}

// シンプルな例 (動的に型を一括置換する用途)
typedef int MyValueType;
// typedef double MyValueType;


int main() {
    MyValueType val = 1.1;
    cout << val << endl; //=> 1

    // 長い型を短く記述する用途
    typedef vector< vector<int> > VVI;
    VVI vvi;
    cout << vvi.size() << endl; //=> 0

    // Int型の16要素の配列
    typedef int IntArr[16];
    IntArr ia16;
    cout << sizeof ia16 / sizeof ia16[0] << endl; //=> 16

    // public な typedef はクラス外からも利用可能です
    MyClass::MyPublicValueType mpval = 2;
    cout << mpval << endl; //=> 2

    // クラス内での使用
    MyClass obj;
    cout << obj.Get() << endl; //=> 256

    // ポインタ (参考: https://www.qoosky.io/techs/4f982b1757 )
    typedef int* IntPtr;
    typedef const int* ConstIntPtr;

    int intval = 8;
    const IntPtr intptr = &intval; // ポインタ自身が不変
    IntPtr const intptr_ = &intval; // 同じ意味です
    ConstIntPtr cintptr = &intval; // ポインタが指す先が不変
    // *cintptr = -1; // とするとエラー

    return 0;
}
関連ページ
    概要 Scala は JVM 上で動作するバイトコードにコンパイルできる言語です。JAVA よりも柔軟な記述ができます。事前にこちらからダウンロードおよびインストールしておいてください。基本的な文法をまとめます。 変数および定数 詳細は『Scala の型に関する知識』をご参照ください。 object HelloWorld { def main(args: Array[String]):
    サンプルコード集 引数のないマクロ #include <iostream> using namespace std; #define EPS (1e-7) #define INF 1e9 int main() { cout << EPS << endl; cout << INF << endl; return 0; }