关于C++中类和成员函数的问题,具体问题见注释
#includeusingnamespacestd;classTime{public:voidset_time();voidshow_time();private:int...
#includeusing namespace std;class Time{ public: void set_time(); void show_time(); private: int hour; int minute; int sec;};int main(){ Time t1; t1.set_time(); //这里是因为调用的是t1的成员函数,之前在类里声明过了,所以不用在main函数中再声明了吗? t1.show_time(); Time t2; t2.set_time(); t2.show_time(); return 0;}void Time::set_time() { cin>>hour; //为什么这里我之前写的是cin>>hour>>minute>>sec; 报错啊,应该是一样的吧 cin>>minute; cin>>sec;}void Time::show_time() { cout<<hour<<":"<<minute<<":"<<sec<<endl;} //为什么上面无论定义函数还是调用函数,()里面都没有写形参的个数和类型啊
展开
展开全部
追问
我还想知道 为什么上面无论定义函数还是调用函数,()里面都没有写形参的个数和类型啊,按标准来说,不是应该在定义和声明中写清楚参数个数和类型吗?比如 t1.set_time(time1)
追答
还是上边已经给你讲过的例子,
你定义一个类的时候,里面含有什么变量,含有什么函数都已经是固定的了,已经和这个类成为一个整体了,
就比如人是一个类,小明是这个类的具体化的一个对象,那么小明就具有这个类的所有特征,
他有一个鼻子,有一个嘴巴,一双眼睛这都已经是定下来的,具体存在的东西,跟小明这个人绑定存在的,你定义的这个对象就等于定义了这个对象类里面所包含的所有,而且跟这个对象绑定存在,不需要你再去声明,定义或者作为函数参数使用了。
跟全局变量有些相似,
你定义一个全局变量
int i=0;
void fun()
{
i = 2;
}
就可以像上边这么使用,因为i这个变量已经存在,不需要你再去在fun函数中传递这个参数,
fun这个函数也是能够使用i这个变量的。
函数的参数意义在于传值,如果不需要这个参数就能把你需要的值传递进来,还干嘛要多此一举加些参数呢?
展开全部
>>> t1.set_time(); //这里是因为调用的是t1的成员函数,之前在类里声明过了,所以不用在main函数中再声明了吗?
不用。因为你调用t1.set_time()之前,一定会包含进class Time的定义的。也就是说也包含了set_time()的定义。不包含class Time的定义,不会让你使用set_time()的。(通过包含类的定义,自然也就包含进了类的成员的定义)
>>>cin>>hour; //为什么这里我之前写的是cin>>hour>>minute>>sec; 报错啊,应该是一样的吧
应该是一样的,仔细检查一下,是不是因为其他原因报错。
>>>//为什么上面无论定义函数还是调用函数,()里面都没有写形参的个数和类型啊
因为你的功能里面不需要形参,函数内使用的都是成员变量,没有用到形参数据。(不需要从外面传进来参数啊)
不用。因为你调用t1.set_time()之前,一定会包含进class Time的定义的。也就是说也包含了set_time()的定义。不包含class Time的定义,不会让你使用set_time()的。(通过包含类的定义,自然也就包含进了类的成员的定义)
>>>cin>>hour; //为什么这里我之前写的是cin>>hour>>minute>>sec; 报错啊,应该是一样的吧
应该是一样的,仔细检查一下,是不是因为其他原因报错。
>>>//为什么上面无论定义函数还是调用函数,()里面都没有写形参的个数和类型啊
因为你的功能里面不需要形参,函数内使用的都是成员变量,没有用到形参数据。(不需要从外面传进来参数啊)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
using namespace std;
class Time{
public:
void set_time();
void show_time();
private:
int hour;
int minute;
int sec;
};
int main(){
Time t1;
t1.set_time(); //这些函数已经在class Time里声明过了
t1.show_time();
Time t2;
t2.set_time();
t2.show_time();
return 0;
}
void Time::set_time() { //这个没有错
cin>>hour>>minute>>sec;
}
void Time::show_time() {
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
pus@pusenSLE10:~> ./a.out
12 12 12
12:12:12
12 13 14
12:13:14
pus@pusenSLE10:~>
函数参数在c++中不写类型的话是void
c中不写的话可以是任意参数
using namespace std;
class Time{
public:
void set_time();
void show_time();
private:
int hour;
int minute;
int sec;
};
int main(){
Time t1;
t1.set_time(); //这些函数已经在class Time里声明过了
t1.show_time();
Time t2;
t2.set_time();
t2.show_time();
return 0;
}
void Time::set_time() { //这个没有错
cin>>hour>>minute>>sec;
}
void Time::show_time() {
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
pus@pusenSLE10:~> ./a.out
12 12 12
12:12:12
12 13 14
12:13:14
pus@pusenSLE10:~>
函数参数在c++中不写类型的话是void
c中不写的话可以是任意参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询