问题描述
- 新手求解:c++中的构造函数问题求解
-
#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 中被引用。在构造函数后面加空的{}就可以通过?
解决方案
这个 { }是主方法体,没有肯定报错,好几年没看过C++了,希望能解答你的疑问
解决方案二:
首先main的返回值为int
Clock这样写试试。
class Clock
{
public:
Clock();
void display();
void update();
void init();
private:
int hour,minute,second;
};
解决方案三:
因为你下面并没有定义这个构造函数,下面如果加
void Clock::Clock()
{
...;
}
就可以了
解决方案四:
应该是加上
Clock::Clock()
{
...;
}
构造函数不带返回类型
解决方案五:
在类定义中声明了构造函数,就需要去实现啊;除非你不去生命,采取缺省的构造函数。
解决方案六:
Clock() -- 这句末尾忘加 ; 而已
解决方案七:
对于构造函数,写完了要注意加;
比如上面那个Clock();//一般为Clock(形参类表);
还有写出来了构造函数就不存在默认构造函数,楼主只是“;”那是函数的声明,既然是自定义构造函数就要自己实现构造函数。
想楼主那样直接加{}是不需要分号的,那样是直接进行函数的实现,具体实现可以写在括号内。
新手报到,请多指教。
解决方案八:
要么声明函数,,要么定义函数。。。也就是要么分号。。要么大括号
或者使用该函数时,包含time.h文件
解决方案九:
书上的知识大部分都是人写的然后打印出来出书,或者是编辑部代写你挂个名字。书上看理论就好,实操还得自己摸索。
解决方案十:
关于构造函数这块,多看看定义