关于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;} //为什么上面无论定义函数还是调用函数,()里面都没有写形参的个数和类型啊 展开
 我来答
糖二灰
2013-08-16 · TA获得超过3940个赞
知道小有建树答主
回答量:1052
采纳率:75%
帮助的人:1051万
展开全部

·1.你的分析是正确的,是因为在类中声明过,所以不需要重新声明,只需要知道有这个类就可以知道这个类中所有的函数或者成员变量,比如给你一个人的声明,你就不需要再去声明这个人有几张嘴,有几个鼻子之类的了。

2.cin>>hour>>minute>>sec;和分开写都是不会出错的,详情可以看上图,如果你出错了,请自行查看跟我上边的区别,应该是你书写错误造成的。

追问
我还想知道  为什么上面无论定义函数还是调用函数,()里面都没有写形参的个数和类型啊,按标准来说,不是应该在定义和声明中写清楚参数个数和类型吗?比如 t1.set_time(time1)
追答
还是上边已经给你讲过的例子,
你定义一个类的时候,里面含有什么变量,含有什么函数都已经是固定的了,已经和这个类成为一个整体了,
就比如人是一个类,小明是这个类的具体化的一个对象,那么小明就具有这个类的所有特征,
他有一个鼻子,有一个嘴巴,一双眼睛这都已经是定下来的,具体存在的东西,跟小明这个人绑定存在的,你定义的这个对象就等于定义了这个对象类里面所包含的所有,而且跟这个对象绑定存在,不需要你再去声明,定义或者作为函数参数使用了。
跟全局变量有些相似,
你定义一个全局变量
int i=0;
void fun()
{
i = 2;
}
就可以像上边这么使用,因为i这个变量已经存在,不需要你再去在fun函数中传递这个参数,
fun这个函数也是能够使用i这个变量的。
函数的参数意义在于传值,如果不需要这个参数就能把你需要的值传递进来,还干嘛要多此一举加些参数呢?
cooke1234
2013-08-16 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3577万
展开全部
>>> t1.set_time(); //这里是因为调用的是t1的成员函数,之前在类里声明过了,所以不用在main函数中再声明了吗?
不用。因为你调用t1.set_time()之前,一定会包含进class Time的定义的。也就是说也包含了set_time()的定义。不包含class Time的定义,不会让你使用set_time()的。(通过包含类的定义,自然也就包含进了类的成员的定义)
>>>cin>>hour; //为什么这里我之前写的是cin>>hour>>minute>>sec; 报错啊,应该是一样的吧
应该是一样的,仔细检查一下,是不是因为其他原因报错。
>>>//为什么上面无论定义函数还是调用函数,()里面都没有写形参的个数和类型啊
因为你的功能里面不需要形参,函数内使用的都是成员变量,没有用到形参数据。(不需要从外面传进来参数啊)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pustian
2013-08-16 · TA获得超过150个赞
知道小有建树答主
回答量:148
采纳率:100%
帮助的人:95.2万
展开全部
#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中不写的话可以是任意参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式