激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - C/C++ - C/C++靜態類和this指針詳解及實例代碼

C/C++靜態類和this指針詳解及實例代碼

2021-04-30 15:31C語言教程網 C/C++

這篇文章主要介紹了 C/C++靜態類和this指針詳解及實例代碼的相關資料,需要的朋友可以參考下

 C/C++靜態類和this指針詳解

1、靜態類

C++的靜態成員不僅可以通過對象來訪問,還可以直接通過類名來訪問。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class CBook{
public:
  static double price;//需要通過類外來進行初始化
}
 
int main(void){
 
  CBook book;
  book.price;//通過對象來訪問
  CBook::price//通過類名來訪問
 
  return 0;
}

靜態成員變量

對應靜態成員有以下幾點需要注意:

(1)靜態數據成員可以是當前類的類型,而其他數據成員只能是當前類的指針或應用類型。

?
1
2
3
4
5
6
7
class CBook{
public:
  static double price;
  CBook book;//非法定義,不允許在該類中定義所屬類的對象
  static CBook m_book;//正確
  CBook *book;//正確
};

(2)靜態數據成員可以作為其他成員函數的默認參數(不同的數據類型不能作為參數)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class CBook{
public:
  int pages;
  static double price;
 
  //定義一個函數,以靜態數據作為默認參數
  void outPutInfo(int data = price){
    //實現
  }
 
  //錯誤定義,普通數據不能作為默認參數
  void outPutPage(int data = pages){
    //實現
  }
};

靜態函數

?
1
static void outPut();

(1)類的靜態成員函數只能訪問靜態數據成員,不能訪問普通數據成員(因為沒有this指針)。

(2)靜態成員函數不能定義為const成員函數(即靜態成員函數末尾不能加上const關鍵字)

?
1
static void outPut() const;//錯誤定義

(3)在定義靜態成員函數時,如果函數的實現位于類體外,則在函數的實現部分不能再標識static關鍵字。

?
1
2
3
4
//錯誤的定義
static void CBook::outPutInfo(){
  //實現
}

關于靜態類我們在總結一下:

(1)類的靜態成員函數是屬于整個類而非類的對象,所以它沒有this指針,這就導致 了它僅能訪問類的靜態數據和靜態成員函數。

(2)不能將靜態成員函數定義為虛函數。

2、this

C++

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class CBook{
 
public:
  int pages;
  void outputPages(){
    cout<<pages<<endl;
  }
};
 
int main(){
  CBook book1,book2;
  book1.pages = 10;
  book2.pages = 20;
  book1.outputPages();
  book2.outputPages();
  return 0;
}

book1和book2兩個對象都有自己的數據成員pages,在調用outputPages時均輸出自己的成員數據,那二者是如何區分的呢?答案是this指針。

在每個類的成員函數(非靜態成員函數)都隱含一個this指針,指向被調用對象的指針,其類型為當前類的指針類型。

所以類似于上面的outputPages()方法,編譯器將其解釋為:

?
1
2
3
4
5
6
7
//函數調用
book1.outputPages(&book1);
 
//函數實現
void outputPages(CBook *this){//隱含的this指針
  cout<<this->pages<<endl;//使用this指針訪問數據成員
}

Java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * 本示例為了說明this的三種用法!
 */
package test;
public class ThisTest {
  private int i=0;
 
  ThisTest(int i){
    //(1)this.i表示成員變量i,i表示參數
    this.i=i+1;
  }
 
  ThisTest(String s){
    System.out.println("String constructor: "+s);
  }
 
  ThisTest(int i,String s){
    //(2)this調用第二個構造器
    this(s);
 
    this.i=i++;
  }
  public ThisTest increment(){
    this.i++;
    //(3)返回的是當前的對象
    return this;
  }
  public static void main(String[] args){
    ThisTest tt0=new ThisTest(10);
    ThisTest tt1=new ThisTest("ok");
    ThisTest tt2=new ThisTest(20,"ok again!");
 
    System.out.println(tt0.increment().increment().increment().i);
  }
}

這里說明一下,this表示當前對象的引用,另this不能用在static方法中,這也就是為什么在靜態函數無法調用成員變量的原因了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
  • C/C++學習C++編程的必備軟件

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

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

    謝恩銘10102021-05-08
  • C/C++C++之重載 重定義與重寫用法詳解

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

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

    青山的青6062022-01-04
  • C/C++C語言中炫酷的文件操作實例詳解

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

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

    針眼_6702022-01-24
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

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

    xiaocaidayong8482021-08-20
  • C/C++深入理解goto語句的替代實現方式分析

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

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

    C語言教程網7342020-12-03
  • 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++c++ 單線程實現同時監聽多個端口

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

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

    源之緣11542021-10-27
主站蜘蛛池模板: 久久久久久久99 | www.成人在线视频 | 日本中文字幕久久 | 免费看欧美黑人毛片 | 狠狠干天天 | 日韩在线观看电影 | 56av国产精品久久久久久久 | www.成人在线视频 | 国产精品av久久久久久久久久 | 精品一区二区久久久久久按摩 | 亚洲综合视频网站 | av黄色片网站 | 亚洲第一成人在线观看 | 国产精品www | 国产成人自拍视频在线 | 欧美人成在线 | 免费看一级视频 | 毛片在线视频观看 | 人人舔人人插 | 亚洲一区二区中文字幕在线观看 | a一级黄 | 国产91精品久久久 | av黄色片网站 | 国产精品亚洲激情 | av成人一区二区 | 亚洲一区二区观看播放 | 91成人免费在线视频 | 91av原创| 久久亚洲线观看视频 | 成人毛片100部 | 色黄视频免费观看 | 一级成人欧美一区在线观看 | 激情网站在线观看 | 亚洲成人欧美在线 | 欧美日韩在线中文字幕 | 久久成人福利 | 国产三级影院 | 免费一级毛片在线播放视频老 | 一级成人毛片 | 欧美精品 | 久草在线资源观看 |