C++中构造函数和指针问题
#include <iostream.h>
class A
{
public:
A();
virtual void play()=0;
void getstring();
};
class B:public A
{
public:
B();
void play();
};
class C:public A
{
public:
C();
void play();
};
A::A()
{
cout<<"创建抽象类指针对象!"<<endl;
}
void A::getstring()
{
cout<<"获取数据成功!"<<endl;
}
B::B()
{
cout<<"创建派生类1对象!"<<endl;
}
void B::play()
{
cout<<"调用派生类1的成员函数!"<<endl;
}
C::C()
{
cout<<"创建派生类2对象!"<<endl;
}
void C::play()
{
cout<<"调用派生类1的成员函数!"<<endl;
}
main()
{
A *a;
a->getstring();
B b;
b.play();
C c;
c.play();
return 0;
}
输出结果:
获取数据成功!
创建抽象类指针对象!
创建派生类1对象!
…………
我想问下类A创建指针对象是为什么不先调用构造函数,而是直接调用类A的成员函数。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
A *a;
a->getstring();
好的编译器编译都不会通过.
之所以代码能run,getstring里没有任何成员变量.
所以((A*)0)->getstring()一样可以run