C++数据封装是面向对象编程的一个重要特点,类成员的访问限制,通过在类主体内部对各个区域标记 public、private、protected 关键字区分。关键字 public、private、protected 称为访问修饰符。
类可以有多个 public、protected 或 private 标记区域。每个标记区域,在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是private。
public公有成员,在程序中类的外部是可访问的,示例如下:
#include <iostream>
using namespace std;
class Line
{
public:
double length;
void setLength( double len );
double getLength( void );
};
double Line::getLength(void)
{
return length ;
}
void Line::setLength( double len )
{
length = len;
}
int main( )
{
Line line;
line.setLength(8.0);
cout << "Length of line : " << line.getLength() <<endl;
line.length = 18.0;
cout << "Length of line : " << line.length <<endl;
return 0;
}
private私有成员,变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员,默认情况下,类的所有成员都是私有private,示例如下:
#include <iostream>
using namespace std;
class Rect
{
public:
double length;
void setWidth( double wth );
double getWidth( void );
private:
double width;
};
double Rect::getWidth(void)
{
return width ;
}
void Rect::setWidth( double wth )
{
width = wth;
}
int main( )
{
Rect rect;
box.length = 8.0;
cout << "Length of rect : " << rect.length <<endl;
box.setWidth(18.0);
cout << "Width of rect : " << rect.getWidth() <<endl;
return 0;
}
protected保护成员,变量或函数与私有成员相似,但protected成员在派生类(即子类)中是可访问的,示例如下:
#include <iostream>
using namespace std;
class Line
{
protected:
double width;
};
class Line2:Line
{
public:
void setWidth( double wth );
double getWidth( void );
};
double Line2::getWidth(void)
{
return width ;
}
void Line2::setWidth( double wth )
{
width = wth;
}
int main( )
{
Line2 line;
line.setWidth(5.0);
cout << "Width of line : "<< line.getWidth() << endl;
return 0;
}