自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++ static不同的應(yīng)用方式

開發(fā) 后端
C++ static在實(shí)際編程中的應(yīng)用與C語言相比有很多不同之處。我們今天將會(huì)針對(duì)這兩種不同的應(yīng)用做一個(gè)對(duì)比,方便大家理解。

C++編程語言的應(yīng)用方式和其他語言特別是C語言有很多不同之處。那么今天大家就可以從C++ static的應(yīng)用方法來分析一下它的不同之處到底體現(xiàn)在哪里。同時(shí)又能讓大家進(jìn)一步掌握C++語言的編程方法。

C++ static具體應(yīng)用方式代碼示例:

  1. public class C {   
  2. public static void M() {   
  3. Console.WriteLine("call in class C");   
  4. }   
  5. }  
  6. public class D : C {   
  7. public new static void M() {   
  8. Console.WriteLine("call in class D");   
  9. }   
  10. }  
  11. public class E<T> where T : C {   
  12. public static void N() {   
  13. T.M();   
  14. }   

代碼是錯(cuò)誤的,不允許一個(gè)instance來call一個(gè)static method。如果你編譯的話,會(huì)提示:

  1. Error 2 'T' is a 'type parameter', 
    which is not valid in the given context 

為什么?從語言設(shè)計(jì)的角度來看,針對(duì)上面的代碼,下面的三種情況只能有一種為true。#t#

1. 本身就是錯(cuò)誤的寫法

2. E.N() calls C.M() no matter what T is.

3. E.N() calls C.M() but E.N() calls D.M().

如果按照2設(shè)計(jì),會(huì)有用戶期望當(dāng)T是class D的時(shí)候,執(zhí)行class D的method M,而不是C。Static之所以是static,因?yàn)樗诰幾g時(shí)刻就可以被確切的determined,或者說,在靜態(tài)代碼分析階段,這個(gè)方法就可以被確定了。所以,如果按照3的方式來設(shè)計(jì),我們就違背了這個(gè)原則。這樣,只有1了。

另外的解釋:

1. virtual static,為什么沒這個(gè)東西?

2. 沒有this指針而已(以上內(nèi)容轉(zhuǎn)自同事的一個(gè)blog,做了簡(jiǎn)單的修改)

不過,不清楚C++里面為什么允許這么做?

  1. public class Test{  
  2. public static void Say(){}  
  3. }  
  4. Test t;  
  5. Test* t2 = new Test();  
  6. t.Say();  
  7. t2->Say(); 

以上就是對(duì)C++ static的相關(guān)應(yīng)用方法。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-04 14:29:45

C++ typenam

2010-02-06 14:12:54

C++繼承方式

2010-02-04 15:41:10

C++內(nèi)存管理

2010-02-04 16:39:26

C++析構(gòu)函數(shù)

2010-02-06 17:39:52

C++ strtok

2010-02-05 16:46:58

C++ TinyXml

2010-02-02 14:27:54

C++ static關(guān)

2011-04-07 16:34:05

staticC++

2010-02-03 10:11:17

C++動(dòng)態(tài)數(shù)組

2010-02-04 13:39:44

C++數(shù)組參數(shù)

2010-02-06 16:21:35

C++常規(guī)DLL

2010-02-06 16:39:45

C++ assert(

2010-02-04 16:52:45

C++顯式轉(zhuǎn)換

2010-02-05 10:30:02

C++操作符重載

2010-01-18 16:42:13

C++類

2010-02-05 14:36:20

C++智能指針

2010-02-04 11:15:28

C++模板限制

2010-02-02 14:45:35

C++ typeof

2010-02-05 14:12:46

C++聲明放置

2010-02-03 16:29:19

C++ sizeof
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)