到C++里面比较重要的东西了,类和对象,先介绍一些概念性的东西。
客观世界中任何一个事物都可以看成一个对象。
对象是构成系统的基本单位。
任何一个对象有两个要素:1.属性,2.行为。同理,凡是具备这两种属性的都叫做对象。
在C++中,每个对象都是有数据和函数组成的。函数是用来对数据进行操作的,以便实现某些功能。
在设计一个对象时,把对象的内部实现和外部行为分割开来。
类是对象的抽象,对象是类的特例。
对象=程序+数据结构。
在C++中对象的类型称为类,类代表了某一批对象中的共性和特征。对象就是类的一个变量。类是抽象的,不占用内存的,而对象是具体的,占用内存空间的。
类类型的声明形式:
Class 类名
{
Private:
私有的数据成员和成员函数;
Public:
公用的数据成员和成员函数;
}
类和结构体类型的异同:
Class保留了结构体类型,而且把他的功能也扩展了,C++允许用struct来定义一个类类型。
用struct定义的类类型内部如果没表明是什么显式声明,系统默认为public,而class则默认为private。
最简单的例子:
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class time
{
public:
int hour;
int minute;
int sec;
};
int main()
{
time t1;
cin>>t1.hour>>t1.minute>>t1.sec;
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;
return 0;
}
注意:
(1)在引用数据成员hour,minute,sec时不要忘记在前面制定对象名。
(2)不要错写类名。
(3)不能删除输入的语句。
程序的改进版:
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class time
{
public:
int hour;
int minute;
int sec;
};
void set_time(time &t1)
{
cin>>t1.hour>>t1.minute>>t1.sec;
}
void show_time(time &t1)
{
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;
}
int main()
{
time t1;
set_time(t1);
show_time(t1);
return 0;
}
在对其作出一定的修改,数据成员不再由键盘输入,而在调用函数时用实数给出,并在函数中使用默认参数。
例:
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class time
{
public:
int hour;
int minute;
int sec;
};
void set_time(time &t1,int hour=0,int minute=0 ,int sec=0)
{
t1.hour=hour;
t1.minute=minute;
t1.sec=sec;
}
void show_time(time &t1)
{
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;
}
int main()
{
time t1;
set_time(t1);
show_time(t1);
time t2;
set_time(t2,1,2,3);
show_time(t2);
return 0;
}
或者:
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class time
{
public:
int hour;
int minute;
int sec;
};
int main()
{
void set_time(time &,int hour=0,int minute =0,int sec=0);
void show_time(time&);
time t1;
time t2;
set_time(t1);
show_time(t1);
set_time(t2,1,2,3);
show_time(t2);
return 0;
}
void set_time(time &t1,int hour,int minute ,int sec)
{
t1.hour=hour;
t1.minute=minute;
t1.sec=sec;
}
void show_time(time &t1)
{
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;
}
程序中只在主函数中set_time函数时制定了默认参数,在定义ste_time函数时不必重复定义默认参数。如果在定义函数时也指定了默认参数,其值应该与函数声明时一致,否则以函数声明时的默认值为准,在定义函数时指定的默认值不起作用。