2 niconicopoi niconicopoi 于 2015.05.27 20:07 提问

新手求解:c++中的构造函数问题求解 5C

#include
using namespace std;
class Clock
{
public:
Clock()
/* {

}就是这个大括号,不加就会出错*/

void display();
void update();
void init();

private:

int hour,minute,second;

};
void Clock::init()
{
hour=minute=second=0;
}
void Clock::display()
{
cout<<hour<<"-"<<minute<<"-"<<second<<endl;
}
void Clock::update()
{
second++;
if(second==60)
{minute++;second=0;}
if(minute==60)
{hour++;minute=0;}
if(hour==24)
{hour=0;}
}
void main()
{
Clock c;
c.init();
c.update();
c.display();
system("pause");

}
public中的构造函数为什么编译出错,"public: __thiscall Clock::Clock(void)" (??0Clock@@QAE@XZ),该符号在函数 _main 中被引用。在构造函数后面加空的{}就可以通过?

12个回答

qq_26313453
qq_26313453   2015.05.27 20:15

这个 { }是主方法体,没有肯定报错,好几年没看过C++了,希望能解答你的疑问

niconicopoi
niconicopoi 可是书上不加大括号也没问题啊TT
2 年多之前 回复
a1193561652
a1193561652   Rxr 2015.05.27 20:18

首先main的返回值为int
Clock这样写试试。

 class Clock
{
public:
    Clock();

    void display();
    void update();
    void init();

private:

    int hour,minute,second;

};
a1193561652
a1193561652 回复niconicopoi: 哦,那是需要实现构造函数,加上Clock::Clock(){...}
2 年多之前 回复
niconicopoi
niconicopoi 有错啊TT
2 年多之前 回复
a1193561652
a1193561652 回复niconicopoi: 就写成Clock();加分号,有没有错?
2 年多之前 回复
niconicopoi
niconicopoi 回复纵横车: 是啊,,我加了{}就不报错了了,不加就会报错
2 年多之前 回复
a1193561652
a1193561652 回复niconicopoi: 你的是Clock(){}改成Clock();试试。
2 年多之前 回复
niconicopoi
niconicopoi 我是不是撸多了居然没看出来有什么区别...
2 年多之前 回复
liuyuxuan2388
liuyuxuan2388   2015.05.27 21:25

因为你下面并没有定义这个构造函数,下面如果加
void Clock::Clock()
{
...;
}
就可以了

liuyuxuan2388
liuyuxuan2388   2015.05.27 21:38

应该是加上
Clock::Clock()
{
...;
}
构造函数不带返回类型

nswcfd
nswcfd   2015.05.27 22:13

在类定义中声明了构造函数,就需要去实现啊;除非你不去生命,采取缺省的构造函数。

nswcfd
nswcfd 笔误,是不去声明。
2 年多之前 回复
frank_20080215
frank_20080215   2015.05.27 22:15

Clock() -- 这句末尾忘加 ; 而已

xialeichang
xialeichang   2015.05.28 00:01

对于构造函数,写完了要注意加;
比如上面那个Clock();//一般为Clock(形参类表);
还有写出来了构造函数就不存在默认构造函数,楼主只是“;”那是函数的声明,既然是自定义构造函数就要自己实现构造函数。
想楼主那样直接加{}是不需要分号的,那样是直接进行函数的实现,具体实现可以写在括号内。
新手报到,请多指教。

xy707707
xy707707   2015.05.28 08:33

要么声明函数,,要么定义函数。。。也就是要么分号。。要么大括号

或者使用该函数时,包含time.h文件

sinat_16057793
sinat_16057793   2015.05.28 09:14

书上的知识大部分都是人写的然后打印出来出书,或者是编辑部代写你挂个名字。书上看理论就好,实操还得自己摸索。

u012377333
u012377333   Rxr 2015.05.28 19:08

关于构造函数这块,多看看定义

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片