读书人

一个入门基础有关问题多谢指导

发布时间: 2012-03-14 12:01:12 作者: rapoo

一个入门基础问题,谢谢指导
struct test
{
test(int){}
test(){}
void fun(){}
};
int main()
{
test a(1);
a.fun();
test b();//符号()不是直接调用构造函数赋值么? 语句1
b.fun();//为什么出错呢? 语句2
return 0;
}
上述程序编译时语句2报错,但如果将语句1改成test b 或者改成 test b(1)就行了。不解。。。
test b()后面的()不是调用构造函数赋值吗?
test b不也是要调用构造函数?
有什么区别吗?谢谢

[解决办法]
test b();调的是哪个构造函数?
[解决办法]
test b();//符号()不是直接调用构造函数赋值么? 语句1
你是想调用默认构造函数么?直接去掉()就可以了
[解决办法]
不懂为什么加上()就不对了呢?能否解释下呢?谢谢了啊
----------------------------------------------------
晕啊,说了那个是函数声明不是变量定义。
[解决办法]
你定义了test(int),看C++书就知道,只要用户自己定义了构造函数,定义对象时就会调用自定义的构造函数,所以你没带参数肯定报错的``
[解决办法]
test b();
b.fun();

---

改成

test b;
b.fun();

test b(); // 编译器因为这个是函数声明

读书人网 >C++

热点推荐