读书人

新手问一个创建对象的有关问题

发布时间: 2012-02-23 22:01:36 作者: rapoo

新手问一个创建对象的问题
struct Test
{
Test(int){} ;
Test(){} ;
void func() {} ;


}
int main()
{
Test a(1) ;
a.func() ;
Test b() ; //为什么这里不对,不是和定义a一样吗
b.func() ; //这里也不对
return 0 ;
}


[解决办法]
Test b() ; -> Test b;
[解决办法]
同意楼上的。
[解决办法]
Test b() ; //为什么这里不对,不是和定义a一样吗

这个的意思是在 声明一个 b 函数,
【无参数,返回一个 Test 类型】
[解决办法]
Test b() ;
这是函数声明的形式
不提供参数使用默认构造函数创建对象不需(),okokok,^_^
[解决办法]
Test b() ; //为什么这里不对,不是和定义a一样吗

这里会让编译器迷惑,以为你是在声明一个返回值为Test的函数,名字叫b,参数表为空
而你又没给它写函数体,调用的方法又不是函数的调用方法,所以报错,因此定义无参的类对象时,只能这样写:

Test b;


b.func() ; //这里也不对

上面改好了,这里就对了

[解决办法]
struct Test
{

Test(int){}
Test(){}
void func() {}


};//别忘记这个 '; '呀
int main()
{
Test a(1) ;
a.func() ;
Test b ; //为什么这里不对,不是和定义a一样吗
b.func() ; //这里也不对
return 0 ;

}

写成上面那样就一定会是正确的啦!
不信去编译看看

读书人网 >C++

热点推荐