在C++中,为了控制类的成员的访问和封装(隐藏),常使用public和private说明符来对类的成员进行封装。
定义在public说明符之后的成员在整个程序中可以被访问,public成员定义类的接口
定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装(隐藏)了类的实现细节。
例如:
struct Sales_data{
public:
Sales_data() = default; //采用默认构造函数
Sales_data(const string &s, unsigned int n,double p):
bookNo(s),units_sold(n),revenue(p*n){ }
//构造函数初始值列表
std:string isbn() const{ return bookNo;}
private:
std:string bookNo;
ungsined units_sold = 0;
double revenue = 0.0;
};
在上面的类中,紧跟在public后面的构造函数和部分成员函数是可以在整个程序内被访问的。而private后面紧跟着的则不能被整个程序访问。
注意:一个类可以包含0个或者多个访问说明符,而且对于某个访问说明符能出现多少次也没有严格限定。每个访问说明符指定了接下来的成员访问级别,其有效范围直到出现下一个访问说明符或者到达类尾为止。
在上面的类的定义中,我们用的是struct关键字,实际上这里的struct替换成class也是完全可以的。
在C++中,struct和class关键字来定义一个类都是可以的,唯一的区别在与,struct和class的默认访问权限不太一样。
类可以在它的第一个访问说明符之前定义成员,这中成员的访问权限就取决于类的定义方式,即是使用struct还是使用class来定义一个类。
若struct关键字,则定义在说明符之前的成员是public
若class关键字,则定义在说明符之前的成员是private
例如:
struct Sales_data{
Sales_data() = default; //采用默认构造函数
Sales_data(const string &s, unsigned int n,double p):
bookNo(s),units_sold(n),revenue(p*n){ }
//构造函数初始值列表
std:string isbn() const{ return bookNo;}
std:string bookNo;
ungsined units_sold = 0;
double revenue = 0.0;
}; //这里的类中的所有成员都是public成员
class Sales_data{
Sales_data() = default; //采用默认构造函数
Sales_data(const string &s, unsigned int n,double p):
bookNo(s),units_sold(n),revenue(p*n){ }
//构造函数初始值列表
std:string isbn() const{ return bookNo;}
std:string bookNo;
ungsined units_sold = 0;
double revenue = 0.0;
}; //这里的类中的所有成员都是class成员
C++学习笔记(十四):public、private、struct、class
原文地址:http://blog.csdn.net/autocyz/article/details/44856997