国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++中訪問權限的示例詳解

C++中訪問權限的示例詳解

2021-11-21 15:57ZhiboZhao C/C++

C++通過 public、protected、private 三個關鍵字來控制成員變量和成員函數的訪問權限(也稱為可見性),下面這篇文章主要給大家介紹了關于C++中訪問權限的相關資料,需要的朋友可以參考下

眾所周知,C++面向對象的三大特性為:封裝,繼承和多態。下面我們就先對封裝做一些簡單的了解。封裝是通過C++中的類來完成的,類是一種將抽象轉換為用戶定義類型的工具。類的定義如下:

?
1
2
3
4
5
6
7
8
9
10
11
class circle
{
    public: //成員變量
      int  m_L;
      int  m_H;
    public: //成員函數(方法)
      double get_Square()
      {
        return m_L*m_H;
      }
}

在上面的代碼中,我們定義了一個 "circle" 類,主要包含三個部分:成員變量,成員方法和訪問控制(public, protect, private)。

  1. public:公共權限,類內可以訪問,類外可以訪問
  2. protected:保護權限,類內可以訪問,類外不可以訪問,繼承的子類可以訪問
  3. private:私有權限,類內可以訪問, 類外不可以訪問,繼承的子類不可以訪問

下面我們的對這三點進行測試,以加深印象:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class circle
{
 public:
  int  public_L;
  int  public_H;
 private:
  int  private_L;
  int  private_H;
 protected:
  int protect_L;
  int protect_H;
 
public: //成員函數(方法)
  circle() //通過構造函數對成員變量進行賦值
  {
   public_L = 20, public_H = 30;
   private_L = 40, private_H = 50;
   protect_L = 60, protect_L = 70;
  }
  double get_Square()
  {
   return private_L*private_H;
  }
};

在定義的 "circle" 類中,由于變量 public_L,public_H 和 get_Square 都是公有權限,因此在類內類外均可訪問,下面這兩種寫法均正確:

?
1
2
3
circle C1; //實例化類對象
double S_1 = C1.get_Square();
double S_2 = C1.public_H * C1.public_L;

但是,由于變量 private_L,private_H 均為私有權限, 因此在類內可以訪問,即 get_Square() 能夠訪問,在類外下面的寫法是錯誤的:

?
1
int S_3 = C1.private_H * C1.private_L; //Error:成員變量不可訪問

同理,對于保護權限的變量,類內可以訪問,類外不可訪問:

?
1
int S_3 = C1.private_H * C1.private_L; //Error:成員變量不可訪問

同樣,繼承的方式也有 public, protect, private 三種:

  • public:公共繼承,保持父類中成員的訪問權限,繼承到子類
  • protected:保護繼承,除私有權限外,父類中所有的成員都以保護權限的方式繼承到子類
  • private:私有繼承,父類中所有的成員都以私有權限的方式繼承到子類。

下面看一個例子:

?
1
2
3
4
5
6
class son1:public circle{
}; // 公有繼承,保持 circle 父類中的訪問權限不變
class son2:protected circle{
}; // 保護繼承,除去 circle 父類中私有權限,其余成員你的的訪問權限全部為保護權限
class son3:private circle{
}; // 私有繼承,父類中所有成員的訪問權限全部為私有權限

那么通過上述分析,

  • son1 的訪問權限與父類一致;
  • son2 只能在類內訪問父類中的成員,但是他的子類中也可以通過public或者protected繼承的方式訪問到父類 "circle" 中的成員
  • son3 只能以私有的方式來繼承父類中的成員

所以:

?
1
2
3
4
5
6
7
8
son1 s1;
s1.get_Square(); //訪問public權限,正確
 
son2 s2;
s2.get_Square(); //Error:成員變量不可訪問,protected權限
 
son3 s3;
s3.get_Square(); //Error:成員變量不可訪問,private權限

C++中,類既可以用class 定義,也可以用struct定義。struct與class唯一的區別就在于默認訪問權限不同struct默認為公共訪問權限,Class默認為私有訪問權限。舉個例子:

?
1
2
3
4
5
6
7
8
9
class a
{
 int m_a; //class 定義,未聲明訪問權限默認為private
};
 
struct b
{
 int m_b; //struct 定義,未聲明訪問權限默認為public
};

于是:

?
1
2
3
4
5
a c_a;
c_a.m_a = 20; // Error: 成員變量不可訪問
 
b s_b;
s_b.m_b = 20; // 正確,訪問public類型變量

C++中類的成員的權限總結:

private:只能由該類的成員函數,友元函數訪問,不能被該類的對象訪問。

protected:除了private外還能被子類的函數訪問,同樣不能被該類的對象訪問。

public:除了protected外,還能被該類的對象訪問。

  private protected public
類的函數和友元函數
子類的函數 ×
類的對象 × ×

?繼承后的可訪問性:
private繼承后,父類中的所有方法在子類中變成private。

protected繼承后,父類>=protected的所有方法(protected,public)在子類中變成protected。

public繼承后,父類方法的屬性不變。

總結

到此這篇關于C++中訪問權限的文章就介紹到這了,更多相關C++訪問權限內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/zhaozhibo/p/14948484.html

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
主站蜘蛛池模板: 亚洲综合精品 | 蜜桃av噜噜一区二区三区小说 | 可以在线观看的av网站 | 亚洲精品九九 | 成人狠狠干 | 欧美日韩国产精品 | 国产美女啪啪 | 久久久精品日本 | 中文字幕日韩av | 日本乱偷中文字幕 | 午夜精品影院 | 亚洲免费国产视频 | 亚洲一区二区在线播放 | 久在线看 | 国产一区在线免费观看 | 亚洲一区在线免费观看 | 久久久人成影片免费观看 | 国产一区二区三区在线免费观看 | 欧美一级c片| 99精品99| 日韩中文字幕av | 日韩视频一区 | 午夜视频在线观看一区二区三区 | 精品在线一区 | 成人深夜免费视频 | 中文一区| 黄色电影免费在线观看 | 久久99综合久久爱伊人 | 国产激情在线视频 | 国产精品久久久久桃色tv | 亚洲综合视频 | a级片在线观看 | 久久久久久免费毛片精品 | a级在线观看 | 羞羞视频免费观 | 欧美日韩中文 | 成人精品国产免费网站 | 欧美精品成人 | 精品国产乱码久久久久久牛牛 | 欧美一区二区三区视频 | 性色网|