首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-23 
新手问一个创建对象的问题structTest{Test(int){}Test(){}voidfunc(){}}intmain(){Testa(1)a.func()T

新手问一个创建对象的问题
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 ;

}

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

热点排行