C++の組み込み型はクラスとして扱える
タイトル通り。
doubleという名前のクラスと思って以下でdoubleの値を生成できる。
double a = double() double b = double(1.0)
ポインタも同様のことが可能だがtypedef
が必要
double* a = double*(); //error double* b = (double*)(); //error typedef double* pointer; double* c = pointer();
例
#include <iostream> struct Test { typedef double value_type; typedef double* pointer_type; }; void test(double test) { std::cout << "double" << std::endl; } void test(Test::value_type*) { std::cout << "pointer" << std::endl; } int main(int argc, char const* argv[]) { double a = double(); double b = double(1.0); double c = double(b); std::cout << a << ", " << b << ", " << c<< std::endl; //実行結果 //0, 1, 1 test(Test::value_type()); test(Test::pointer_type()); //実行結果 //double //pointer //double *d = (double*)(); //error double *d = Test::pointer_type(); double *e = Test::pointer_type(&a); std::cout << d << ", " << e << std::endl; //実行結果 //0, 0x7fff57530970 return 0; }