**类**
以一个小时钟的例子,解释
类的和对象的定义
构造函数的基本概念
委托构造函数
#include<iostream>
using namespace std;
class clock
{
public://可以被看到的数据或函数
clock(int newH, int newM, int newS);//构造函数
clock();//重载一个默认构造函数,
//如果自己一个构造函数都没有,系统会帮你构造一个默认的构造函数的
void settime(int newH = 0, int newM = 0, int newS = 0);
void showetime();
private://类内部的东西,不能被看见
int hour, minute, second;
};//完成一个类的定义
void clock::settime(int newH, int newM, int newS)
{
hour = newH;
minute = newM;
second = newS;
}
void clock::showetime()
{cout << hour <<":"<< minute <<":"<< second<<endl;}
clock::clock(int newH, int newM, int newS) :
hour(newH), minute(newM), second(newS){}
clock::clock():hour(0), minute(0), second(0){}
//clock::clock() : clock(0, 0, 0) {} 新标准也可以这样定义clock(),这是委托了第一个构造函数
//在类外面定义类中函数
int main()
{
clock c1(11,47,0);//有构造函数直接在定义对象时设计时间,不用调用settime函数,而是调用第一种构造函数
clock c2;//也调用构造函数,不过是第二个,根据参数表的匹配(无参数)
c1.showetime();
c2.showetime();
return 0;
}
类分私有成员(private):允许访问,紧跟在类名后面定义时,可以省略private。
公有成员 (public):无法访问。
保护成员 (protected):与私有成员很像,在派生和继承可以看出区别。
**构造函数:**
函数名与类名相同
不能有返回值
可无参数
可以时内联函数
可重载
可带默认值
clock(int newH, int newM, int newS);//构造函数
clock();//重载一个默认构造函数,
定义时自动调用
clock c1(11,47,0);
但是不能出现多个默认构造函数,因为两个都可以用,系统不知道用哪个如
clock();
clock(newH=0;newM=0;newS=0);//这个也可以是默认构造函数,就算不初始化,这个也可以调用
构造函数时必须的,如果不声明 ,编译器会帮我们自己搞一个默认构造函数,这个函数参数表是空的
**委托构造函数**
一个构造函数可以委托另一个构造函数进行初始化
clock::clock() : clock(0, 0, 0) {}