默认构造函数加括号出错问题!!!

时间:2008-06-04 19:29:20   来源:论坛整理  作者:  编辑:chinaitzhe
class A
{
public:
A(int){}
A(){}
void f(){}
};
int main()
{
A a();//根本不能用sizeof(a)看a所分配的内存大小
A *b=new A();//没有问题
a.f();//[color=#FF0000][/调用出错误color
b->f();//调用没有问题

return 0;
}

上边在栈上分配的时候,默认构造的时候加上了括号,就会出现错误(调用其成员函数的时候),而在堆上分配的时候没有这个问题,都是调用构造函数为什么会出现这样的问题?大家来看看
网友回复:A a();//
变成函数声明了。。
网友回复:返回值为A,参数为空的函数a()
网友回复:A a;
就行了
网友回复:A a;
网友回复:To 1楼 你能在一个函数里边声明一个函数么 main函数里边还可以声明一个函数?
网友回复:To4楼 恩呐 知道不加括号是没有问题的 就在说加括号是社么问题
网友回复:PS:怎么看编译后的汇编代码?
网友回复:A a()
声明了一个函数a(),他返回A.
网友回复:
引用 5 楼 ygb913 的回复:
To 1楼 你能在一个函数里边声明一个函数么 main函数里边还可以声明一个函数?

你就不能自己试一下么?
难不成你还搞不清楚声明函数和定义函数的区别?
网友回复:
引用 1 楼 jieao111 的回复:
A a();//
变成函数声明了。。


nod. c 的一个恶心陷井…
网友回复:
引用 5 楼 ygb913 的回复:
To 1楼 你能在一个函数里边声明一个函数么 main函数里边还可以声明一个函数?


当然可以声明...又不是定义
不信你自己再加个void f();
网友回复:帮顶,接分
网友回复:恩 了解了 谢谢各位了 结贴去
网友回复:A a(0);
关键字:默认,构造,函数,括号,出错,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面