读书人

派生类中用:操作符调用父类函数this

发布时间: 2013-08-09 15:16:24 作者: rapoo

派生类中用::操作符调用父类函数,this指针传递的是谁的?
出门没有编译器,在线的又打不开,忽然想起一个问题,求大哥们帮助~
主要代码如下:

class base
{
public:
base(){a = 10};
~base();
int a;
virtual void f1()
{
cout << "base f1" << endl;
cout << a << endl;
f2();
}
virtual void f2()
{
cout << "base f2" << endl;
}
}

class child:public base
{
public:
child(){a= 20};
~child();
int a;
virtual void f1()
{
cout << "child f1" << endl;
base::f1();
}
virtual void f2()
{
cout << "child f2" << endl;
}
}

main
{
base* pBase = new child;
pBase.f1();

return;
}

上边程序的执行结果是什么?(没有编译器直接在帖子上敲的,头文件没写,有点编译小错难免,见谅。。)

其实我主要想问的是:base::f1();传入f1的this指针是父类的还是之类的?
执行bae::f1时,函数中输出的a 和 f2()是父类的a还是类的a? 是父类的f2还是子类的f2?
[解决办法]
这里传的应该是child的类型。
这里应用了c++面向对象的多态机制。
还有,这里有个小错误,就是child和base中都有一个public成员叫int a;这里名字冲突了。

读书人网 >C++

热点推荐