C++ 訪問修飾符
發(fā)布時間:2023-12-11 13:57:16
C++ 是面向?qū)ο蟮木幊陶Z言,對象就是面向?qū)ο蟪绦蛟O(shè)計的核心。所謂對象就是真實世界中的實體,對象與實體是一一對應(yīng)的,也就是說現(xiàn)實世界中每一個實體都是一個對象,它是一種具體的概念。本文主要介紹C++ 訪問修飾符。
1、常見的訪問修飾符
1)public(共有成員)
修飾成員在任意地方都可以訪問。公有成員在程序中類的外部是可訪問的??梢圆皇褂萌魏纬蓡T函數(shù)來設(shè)置和獲取公有變量的值。
例如,
#include <iostream>
using namespace std;
class Line
{
public:
double length;
void setLength( double len );
double getLength( void );
};
// 成員函數(shù)定義
double Line::getLength(void)
{
return length ;
}
void Line::setLength( double len )
{
length = len;
}
// 程序的主函數(shù)
int main( )
{
Line line;
// 設(shè)置長度
line.setLength(6.0);
cout << "Length of line : " << line.getLength() <<endl;
// 不使用成員函數(shù)設(shè)置長度
line.length = 10.0; // OK: 因為 length 是公有的
cout << "Length of line : " << line.length <<endl;
return 0;
}
2)private(私有成員)
修飾的成員只能夠在類中或者友元函數(shù)中可以訪問。私有成員變量或函數(shù)在類的外部是不可訪問的,甚至是不可查看的。只有類和友元函數(shù)可以訪問私有成員。默認(rèn)情況下,類的所有成員都是私有的。 width
是一個私有成員。
例如,
#include <iostream>
using namespace std;
class Box
{
public:
double length;
void setWidth( double wid );
double getWidth( void );
private:
double width;
};
// 成員函數(shù)定義
double Box::getWidth(void)
{
return width ;
}
void Box::setWidth( double wid )
{
width = wid;
}
// 程序的主函數(shù)
int main( )
{
Box box;
// 不使用成員函數(shù)設(shè)置長度
box.length = 10.0; // OK: 因為 length 是公有的
cout << "Length of box : " << box.length <<endl;
// 不使用成員函數(shù)設(shè)置寬度
// box.width = 10.0; // Error: 因為 width 是私有的
box.setWidth(10.0); // 使用成員函數(shù)設(shè)置寬度
cout << "Width of box : " << box.getWidth() <<endl;
return 0;
}
2)protected(保護成員)
修飾的成員可以在類中的函數(shù)、子類函數(shù)及友元函數(shù)中訪問。
保護成員變量或函數(shù)與私有成員類似,但有一點不同,保護成員在派生類(即子類)中是可訪問的。
例如,
#include <iostream>
using namespace std;
class Box
{
protected:
double width;
};
class SmallBox:Box // SmallBox 是派生類
{
public:
void setSmallWidth( double wid );
double getSmallWidth( void );
};
// 子類的成員函數(shù)
double SmallBox::getSmallWidth(void)
{
return width ;
}
void SmallBox::setSmallWidth( double wid )
{
width = wid;
}
// 程序的主函數(shù)
int main( )
{
SmallBox box;
// 使用成員函數(shù)設(shè)置寬度
box.setSmallWidth(5.0);
cout << "Width of box : "<< box.getSmallWidth() << endl;
return 0;
}
2、訪問修飾符繼承
有public
, protected
, private
三種繼承方式,它們相應(yīng)地改變了基類成員的訪問屬性。
1)public 繼承
基類 public
成員,protected
成員,private
成員的訪問屬性在派生類中分別變成:public
, protected
, private
2)protected 繼承
基類 public
成員,protected
成員,private
成員的訪問屬性在派生類中分別變成:protected
, protected
, private
3)private 繼承
基類 public
成員,protected
成員,private
成員的訪問屬性在派生類中分別變成:private
, private
,