C++中构造函数和指针问题

发布于 2021-11-20 07:32:50 字数 1103 浏览 970 评论 1

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

能否归途做我良人 2021-11-20 13:31:11

 A *a;

 a->getstring();

好的编译器编译都不会通过.

之所以代码能run,getstring里没有任何成员变量.

所以((A*)0)->getstring()一样可以run

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文