目录
目录
#1.类成员访问限定符
#2.构造函数
##2.1含参数的构造函数
##2.2构造函数的重载
1.类成员访问限定符
限定符:public,private,protected
1.1:public
限定为public的成员函数等可以理解为能被所有的子类函数(这个以后会解释,详情见以后的文章)或者是对象访问。
1.2:private
限定为private的成员函数等可以理解为只能被类内函数,或者是被友元函数(友元函数以后会解释,详情见以后的文章)访问,而不能被类外对象或者是子类对象所访问。
1.3:protected
限定为protected的成员函数可以理解为只能被类内函数又或是子类函数访问,而不能被类外对象或者是子类对象访问。
2.构造函数
构造函数:构造函数跟对应类的类命是相同的,一个类只能有一个构造函数。
构造函数的作用:在建立对象时自动执行,其作用就是对对象的函数进行初始化。
构造函数结构如下:
#include <iostream>
using namespace std;
class time
{
public:
time(); //这就是跟time类同名的构造函数
}
2.1含参数的构造函数
- 在进行初始化的过程中我们也会有很多要求,比如说我们可能希望如果我不设定初始值,程序自动进行赋值一个初始值,但是同样我们也可能会对某一个数值进行更改,因此带参数的构造函数应运而生。
- 含参的构造函数:一般定义构造函数都会采用类外定义类内声明的方式(使得类内更加清晰而不是全是代码)
#include <iostream>
using namespace std;
class time
{
public:
time() //初始化
{
hour=10;
minute=12;
sec=56;
}
int hour;
int minute;
int sec;
};
int main(){
time t;
cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;
}
- 结果如下:
- 这就是很简单的一个初始化,在定义一个对象的时候会对对象当中的变量进行初始化 。
2.2构造函数的重载
- 构造函数的重载就可以实现多种可能性的初始化,下面是举例的代码:
#include <iostream>
using namespace std;
class time
{
public:
time();
put();
time(int h,int m,int s):hour(h),minute(m),sec(s){ //这里是类内定义一个含参的构造函数
hour=h;
minute=m;
sec=s;
}
private:
int hour;
int minute;
int sec;
};
time::put(){
cout<<hour<<":"<<minute<<":"<<sec<<endl;
return 0;
}
time::time(){ //这里类外定义了一个不含参数的构造函数
hour=10;
minute=10;
sec=10;
}
int main(){
time t(12,23,34);
time t1;
cout<<t.put()<<endl;
cout<<t1.put()<<endl;
}
结果如下:
- 解释一下为什么最后要用到put()这个函数,因为类中的所有数据都是对对象封闭的,也就是对象无权访问数据,因为数据是在private下面,但是数据可以被类内函数访问,所以借助put函数将数据输出出来。(最后面的这个0,是put函数返回的0值。)
- 在对象t的位置我想输入三个数值,那么就会调用类内定义的含参的构造函数,但是在对象他的位置,我并没有给我想输入的初值,那么就会调用类外定义的一个无参数的构造函数。