弱弱地问个问题,谢谢指教
class A
{
public:
A(int i){}
};
int main(int argc, char *argv[])
{
A a(); //可以
A a; //非法!?
}
这里的A a()和A a有什么区别吗?谢谢!
问题点数:10、回复次数:7Top
1 楼foochow(无聊,灌水......)回复于 2005-08-02 19:39:21 得分 5
A a(); //声明一个函数返回类型是A
Top
2 楼jorsef1984()回复于 2005-08-02 19:41:50 得分 0
A a 需要构造参数Top
3 楼zengleiming(雷语)回复于 2005-08-02 19:41:55 得分 0
你自定义了类的构造函数,系统就会直接调用你自定义的A(int i);
而不会再去调用系统为你缺省的,
你可在debug下单步追踪 看系统到底是如何调用的Top
4 楼xjp6688(大平/要做必须最好)回复于 2005-08-03 08:32:17 得分 0
class A
{
public:
A(){}
A(int i){}
};
int main(int argc, char *argv[])
{
A a(); //可以
A a; //非法!?//就不非法了
}
Top
5 楼yc0188(守护瓶(萍))回复于 2005-08-03 08:54:01 得分 5
class A
{
public:
A(){}
A(int i){}
};
int main(int argc, char *argv[])
{
A a(); //定义了 一个返回值为 A 的函数
A a; //一个A的对象.
}
函数名和变量名冲突, 所有除错.
单独定义就可以了.Top
6 楼BillSmith(睡教觉主)回复于 2005-08-03 09:46:33 得分 0
名称冲突,且第二个没有构造函数。
第一个是函数,第二个是对象。Top
7 楼jlkzzh(一阵风)回复于 2005-08-03 10:29:15 得分 0
名称冲突是对的Top




