关于构造函数括号能否省略的有关问题
关于构造函数括号能否省略的问题
------解决思路----------------------
Clock myclock,yourclock(19,54,26);//为何不能够写成Clock myclock()加括号
因为Clock yourclock(19,54,26);是声明并初始化一个类的实例
如果构造函数有全部的初始化缺省值,可以不带逗号列表,但楼主函数定义没有做到。
Clock::Clock(hour=0;minute=0;second=0;)
{
}
------解决思路----------------------
首先第一个:Clock myclock,yourclock(19,54,26);//为何不能够写成Clock myclock()加括号
你这一步如果加括号那就是试图显式调用默认构造函数,C++中显式调用默认构造函数有特定语法
可以是Clock myclock = Clock();
Clock* clock = new Clock();
Clock myclock =Clock::Clock();
加上括号不符合c++默认构造函数调用方法,就这么简单,第二个可以加括号是因为你调用的不是默认构造函数。
第二个:myclock.show();//为何不能写成myclock.show不加括号
哥,你见过不写括号的函数调用?show()是类中的函数,函数调用最基本的不都要加括号?当然特殊情况除外,比如windows编程中的一些宏函数,但就这里而言,一个普通的类成员函数就要这样
#include <iostream>
using namespace std;
class Clock{
int hour,minute,second;
public:
Clock();
Clock(int,int,int);
void move(int);
void move(int,int);
void show();
};
Clock::Clock()
{
hour=0;minute=0;second=0;
}
Clock::Clock(int h,int m,int s)
{
hour=h;minute=m;second=s;
}
void Clock::move(int h)
{
hour=h+hour;
if(hour>24) hour=hour-24;
}
void Clock::move(int h,int m)
{
hour=h+hour;
minute=m+minute;
if(minute>=60)
{
minute=minute-60;
hour++;
}
if(hour>24) hour=hour-24;
}
void Clock::show()
{
cout<<"时间是"<<hour<<":"<<minute<<":"<<second<<endl;
}
int main()
{
Clock myclock,yourclock(19,54,26);//为何不能够写成Clock myclock()加括号
myclock.show();//为何不能写成myclock.show不加括号
yourclock.show();
myclock.move(8);
myclock.show();
yourclock.move(7,30);
yourclock.show();
system("pause");
}
------解决思路----------------------
Clock myclock,yourclock(19,54,26);//为何不能够写成Clock myclock()加括号
因为Clock yourclock(19,54,26);是声明并初始化一个类的实例
如果构造函数有全部的初始化缺省值,可以不带逗号列表,但楼主函数定义没有做到。
Clock::Clock(hour=0;minute=0;second=0;)
{
}
------解决思路----------------------
首先第一个:Clock myclock,yourclock(19,54,26);//为何不能够写成Clock myclock()加括号
你这一步如果加括号那就是试图显式调用默认构造函数,C++中显式调用默认构造函数有特定语法
可以是Clock myclock = Clock();
Clock* clock = new Clock();
Clock myclock =Clock::Clock();
加上括号不符合c++默认构造函数调用方法,就这么简单,第二个可以加括号是因为你调用的不是默认构造函数。
第二个:myclock.show();//为何不能写成myclock.show不加括号
哥,你见过不写括号的函数调用?show()是类中的函数,函数调用最基本的不都要加括号?当然特殊情况除外,比如windows编程中的一些宏函数,但就这里而言,一个普通的类成员函数就要这样