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

gl5_progのメモ

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

(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", ((Base*)(&d))->m );
    return 0;
}
2
1

ついでにJavaも試してみたらできた。そういうものなのか。

http://ideone.com/MC9IeF

/* package whatever; // don't place package name! */

import java.io.*;

class Base
{
    public int m = 1;
}

class Derived extends Base
{
    public int m = 2;
}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Derived d = new Derived();
        System.out.println( d.m );
        System.out.println( ((Base)d).m );
    }
}
2
1