没有给time1编写默认构造函数,在类的定义里加一句time1():hour(0),minute(0),second(0){}
int main()
{
time1 t1; //并没有在类中添加基础的构造函数,这一行可以改成time1 t1(time_t对象)
cout << t1.printfUniversal();
cout << "\nHello world!" << endl;
return 0;
}
//
class time1
{
public:
time1(); //加一行 然后再Cpp中写实现
time1( time_t);
void setTime(int ,int ,int );
void printfUniversal();
private:
int hour;
int minute;
int second;
};
注意事项
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。
构造函数的格式为:
)
{ //Do something...}
为参数列表
在类创建的时候,都会调用构造函数,但是有的时候不写自己的构造函数的话, 系统会调用默认的构造函数 (也就是什么都不做),但是当写了构造函数后, 系统就不会调用默认的构造函数,构造函数的声明必须写在类中, 但是实现可以写在外头 (如果不知道如何将成员函数外部实现的看这里):
class Student
{
string name;
public:
Student(string)
};
Student::Student(string name)
{
this->name=name;//这里可以直接访问类的成员
}
备注: 在第9行用到了 this 指针
这样一来, 在声明类的时候, 可以调用构造函数, 其格式为:
)
指该类的构造函数的参数列表
构造函数必须这样写, 不得写在声明后的其余地方
#include
#include
using namespace std;
class Student
{
string name;
public:
Student(string);
string GetName();
};
Student::Student(string name)
{
this->name=name;
}
string Student::GetName()
{
return name;
}
int main()
{
Student s;
s.Student("TweeChalice");//Error!!!
cout< }
int main()
{
time1 t1; //你并没有在类中添加基础的构造函数 这一行可以改成time1 t1(time_t对象)
cout << t1.printfUniversal();
cout << "\nHello world!" << endl;
return 0;
}
//===================
class time1
{
public:
time1(); //加一行 然后再Cpp中写实现
time1( time_t);
void setTime(int ,int ,int );
void printfUniversal();
private:
int hour;
int minute;
int second;
};
很明显构造函数需要参数,而time1 t1;又没有参数,所以报错了
你没有给time1编写默认构造函数……
在类的定义里加一句time1():hour(0),minute(0),second(0){}试试