到底这两句有什么区别?
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- virtual void foo()
- {
- cout<<"in A"<<endl;
- }
- };
- class B: public A
- {
- virtual void foo()
- {
- cout<<"in B"<<endl;
- }
- };
- main()
- {
- A *p = new B(); //(1)
- //A *p = new B; //(2)
- p->foo();
- }
复制代码请问:上述程序中(1)与 (2)两句到底有什么区别?谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
没有高人会?{:3_182:}{:3_182:}{:3_182:}
没区别
<<C++ Primer>> 12.4. Constructors
Using the Default Constructor
The correct way to define an object using the default constructor is to leave off the trailing, empty parentheses:
// ok: defines a class object ...
Sales_item myobj;
On the other hand, this code is fine:
// ok: create an unnamed, empty Sales_itemand use to initialize myobj
Sales_item myobj = Sales_item();
#include <iostream>
using namespace std;
struct foo
{
int val;
};
int main()
{
foo* p1 = new foo;
foo* p2 = new foo();
cout << p1->val << endl; // output: 0
cout << p2->val << endl; // output: random value
return 0;
}
回复 4# bruceteen
反了,带 () 的会初始化为 0。
两个都是0
本帖最后由 zhuqing_739 于 2011-05-11 15:52 编辑
我把下面的程序运行了一下:
复制代码带括号的结果:
2.jpg (16.6 KB, 下载次数: 2)
下载附件
2011-05-11 15:49 上传
不带括号的结果:
1.jpg (17.75 KB, 下载次数: 2)
下载附件
2011-05-11 15:52 上传
两个结果一样的!!!!!!
怎么解释?
一樣。
对于内置类型前一个会初始化为0,后者不会;自定义类型,就没区别了,都是默认构造函数
9楼说的对