关于C++类中构造函数的应用

C++class语句中报错这个为什么啊?
问题相关代码
#include 
#include 
using namespace std;

class Clock{
      int hour,minute,second;
      public:
      Clock(int newH, int newM, int newS);
      void getTime(int newH ,int newM, int newS);
      void showTime();
};

Clock::Clock(int newH ,int newM ,int newS):hour(newH),minute(newM),second(newS){}
void Clock::getTime(int newH ,int newM, int newS)
{
      hour=newH;
      minute=newM;
      second=newS;
}
void Clock::showTime()
{
      cout<<"Now time is "<" : "<" : "<int main()
{
      Clock a(1,2,3);
      a.showTime;
      Clock b;
      b.getTime(4,5,6);
      b.showTime();
      return 0;
}
单独用构造函数或者单独用getTime函数都没问题,两个都用就会报错。

img


class Clock
{
    int hour, minute, second;

public:
    Clock() : hour(0), minute(0), second(0) {} //默认构造
    Clock(int newH, int newM, int newS);
    void setTime(int newH, int newM, int newS); //名字改为setTime更合理
    void showTime();
};

Clock::Clock(int newH, int newM, int newS) : hour(newH), minute(newM), second(newS) {}

void Clock::setTime(int newH, int newM, int newS)
{
    hour = newH;
    minute = newM;
    second = newS;
}
void Clock::showTime()
{
    cout << "Now time is " << hour << " : " << minute << " : " << second << endl;
}

int main()
{
    Clock a(1, 2, 3);
    a.showTime(); //函数缺括号, a.showTime;
    Clock b;//调用默认构造
    b.setTime(4, 5, 6);
    b.showTime();
    return 0;
}

Clock b; 这个类实例定义要求Clock有无参构造函数,但你没有写

你代码,跟你出错的不配套吧。应该是 Clock b 这一行吧?
Clock b 是为了创建一个临时对象,创建就会调用构造,而你这里希望调用没有参数的构造函数。
可是,你类型并没有这样的构造,参考 Clock a

如果一个类,不提供任何构造函数,编译器会自动指定一个默认构造函数,如果你提供了构造函数,那么编译器就不会指定默认的构造函数

在Clock类里添加默认构造函数

Clock() : hour(0), minute(0), second(0) {}