読者です 読者をやめる 読者になる 読者になる

gl5_progのメモ

自分のためのメモとかまとめとか

ideoneメモ

(ideoneメモ)基底クラスと同じ名前のメンバ変数は定義可能

できないと思ってた。 http://ideone.com/mvfwSh #include <stdio.h> class Base { public: Base() : m(1){} int m; }; class Derived : public Base { public: Derived() : m(2){} int m; }; int main( void ) { Derived d; printf( "%d\n", d.m ); printf( "%d\n", </stdio.h>…

(ideoneメモ)配列の参照

http://ideone.com/RJd1WV #include <stdio.h> #define COUNT 5 typedef int(&DEF_ARRAY)[COUNT]; class A { public: int m_Array[COUNT]; /* error int(&)[COUNT] GetArray( void ) { return m_Array; } */ A() { for( int i=0; i</stdio.h>

(ideoneメモ)プリミティブ型みたいな挙動をさせる

http://ideone.com/IL1t5i float + double の演算結果はdoubleになる。 こういうのをユーザー定義クラスでどうやればいいのか試してみた。 格下であるFloatにのみDouble operator+(Double)を持たせることで、 Float + Double の結果をDoubleにした。 Double …

(ideoneメモ)2項演算の左オペランドに暗黙の型変換が発生しないことの確認

Ideone.com | Online C++ Compiler & Debugging Tool #include <stdio.h> class Double { public: Double operator +( Double other ){ printf( "Double::operator+(Double)\n" ); return *this; } }; class Float { public: operator Double(){ printf( "Float to Do</stdio.h>…

(ideoneメモ)関数内クラスのスコープ

http://ideone.com/B3XdFk #include <stdio.h> int main( void ) { class A{}; if ( true ) { class B{}; } { class C{}; } A a; /* error B b; C c; */ return 0; } 関数内クラスについて さらに深いスコープ(if文内など)でも宣言できる そのスコープ外からは見えな</stdio.h>…

(ideoneメモ)if文などのスコープについて

http://ideone.com/GJO3u6 #include <stdio.h> int main( void ) { if ( int a = 1 ) { /* error int a = 2; */ printf( "a = %d\n", a ); } /* error printf( "a = %d\n", a ); */ for ( int i=0; i<1; ++i ) { /* error int i = 10; */ printf( "i = %d\n", i ); } </stdio.h>…

(ideoneメモ)内部クラスから見える型名の範囲

http://ideone.com/TmzG0l #include <stdio.h> class A { public: class A1; class A2; class A1 { public: A2* pA2; class A11 { public: A2* pA2; }; }; class A2 { public: }; }; int main( void ) { return 0; } 内部クラスから見えるのは直近の外部クラスだけで</stdio.h>…