C++学习笔记(十四):public、private、struct、class

1、关于public和private的区别

在C++中,为了控制类的成员的访问和封装(隐藏),常使用public和private说明符来对类的成员进行封装。

定义在public说明符之后的成员在整个程序中可以被访问,public成员定义类的接口

定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装(隐藏)了类的实现细节。

例如:

structSales_data{

public:

Sales_data()=default;//采用默认构造函数

Sales_data(conststring&s,unsignedintn,doublep):

bookNo(s),units_sold(n),revenue(p*n){}

//构造函数初始值列表

std:stringisbn()const{returnbookNo;}

private:

std:stringbookNo;

ungsinedunits_sold=0;

doublerevenue=0.0;

};

在上面的类中,紧跟在public后面的构造函数和部分成员函数是可以在整个程序内被访问的。而private后面紧跟着的则不能被整个程序访问。

注意:一个类可以包含0个或者多个访问说明符,而且对于某个访问说明符能出现多少次也没有严格限定。每个访问说明符指定了接下来的成员访问级别,其有效范围直到出现下一个访问说明符或者到达类尾为止。

2、关于class和struct关键字的区别

在上面的类的定义中,我们用的是struct关键字,实际上这里的struct替换成class也是完全可以的。

在C++中,struct和class关键字来定义一个类都是可以的,唯一的区别在与,struct和class的默认访问权限不太一样。

若struct关键字,则定义在说明符之前的成员是public

若class关键字,则定义在说明符之前的成员是private

例如:

structSales_data{

Sales_data()=default;//采用默认构造函数

Sales_data(conststring&s,unsignedintn,doublep):

bookNo(s),units_sold(n),revenue(p*n){}

//构造函数初始值列表

std:stringisbn()const{returnbookNo;}

std:stringbookNo;

ungsinedunits_sold=0;

doublerevenue=0.0;

}; //这里的类中的所有成员都是public成员

class Sales_data{

Sales_data()=default;//采用默认构造函数

Sales_data(conststring&s,unsignedintn,doublep):

bookNo(s),units_sold(n),revenue(p*n){}

//构造函数初始值列表

std:stringisbn()const{returnbookNo;}

std:stringbookNo;

ungsinedunits_sold=0;

doublerevenue=0.0;

}; //这里的类中的所有成员都是class成员

,偶尔会想,如果人生真如一场电子游戏,

C++学习笔记(十四):public、private、struct、class

相关文章:

你感兴趣的文章:

标签云: