学了c++才知道什么是面向对象什么是面向过程。幼稚的我曾经还觉得c++和C语言差不多,接触之后才知道c++是多么的难,光类和对象这个知识点就看了一天。什么构造函数析构函数,对象数组对象成员弄得我头大,现在才知道为什么老师说c++是最难的语言,学c++就是在地狱里磨炼,从地狱出来就是天堂,会有会当凌绝顶一览众山小的感觉,希望自己能坚持到底,尽自己的最大努力把C++学好,不求泛而多,只求专而精。哎老大不小了,压力巨大,希望早点工作减轻父母的压力,回报自己的家人和那些对自己有知遇之恩的人,又想读个博士,鱼与熊掌不可兼得,希望自己从今天以后有个清楚的规划,要超强的自律,争取每一天都过得充实,不唠那么多没用的了,要学习了。一段有错误的代码(关于c++中的成员函数)
#include<iostream>
using namespace std;
class time
{
void set_time(void);
void show_time(void);
int hour;
int minute;
int sec;
} ;
time t;
int main()
{
set_time;
show_time;
return 0;
}
int set_time(void)
{
cin>>t.hout;
cin>>t.minute;
cin>>t.sec;
}
int show_time(void)
{
cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;
}
这段代码有四个错误
(1)set_time和show_time函数放在main函数之后但之前却未声明
(2)set_time和show_time函数按time的成员函数来声明的但定义的时候确是按一般函数定义的。
(3)类里面的成员只要没有声明均按私有成员处理,这是不能调用的,但是在set_time和show_time函数都调用了。
(4)没有返回函数。
下面贴上按一下要求修改的代码
(1)将数据成员改为私有的
(2)将输入和输出的功能由成员函数实现
(3)在类体内定义成员函数
#include<iostream>
using namespace std;
class time
{
public:
void set_time(void)
{
cin>>hour;
cin>>minute;
cin>>sec;
}
void show_time(void)
{
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
private:
int hour;
int minute;
int sec;
};
time t;
int main()
{
t.set_time();
t.show_time();
return 0;
}
进一步修改明确类成员函数的各种定义方法
在类体内声明成员函数,在类外定义成员函数,类外定义成员函数要用到作用域::
#include<iostream>
using namespace std;
class time
{
public:
void set_time(void);//原来没分号,现在有分号
void show_time(void);
private:
int hour;
int minute;
int sec;
};
time t;
void time::set_time(void)//利用作用域在类外对成员函数进行定义
{
cin>>hour;
cin>>minute;
cin>>sec;
}
void time::show_time(void)
{
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
t.set_time();
t.show_time();
return 0;
}