成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對C++編程錯誤進行說明講解

開發 后端
C++中的結構與類差不多,唯一的區別是,在缺省狀態下,結構的訪問權限是public,其繼續權限也是public.一些C++編程人員將結構作為數據對象,但這只是一個約定而非是必須這樣的

C++編程錯誤分為:注重隱性的數據類型轉換、結構與對象是有區別的、虛方法必須被明確地覆蓋,下面就C++編程時遇到的錯誤進行學習探討,希望大家能夠在此得到自己想要的東西。

錯誤1:注重隱性的數據類型轉換

Boxing和unboxing是使值型數據類型被當作索引型數據類型使用的二個過程。值型變量可以被包裝進一個對象中,然后再被解包回值型變量。包括內置數據類型在內的所有C#中的數據類型都可以被隱性地轉化為一個對象。包裝一個值型變量就會生成一個對象的實例,然后將變量拷貝到實例中。#t#

Boxing是隱性的,假如在需要索引型數據類型的地方使用了值型數據類型的變量,值型變量就會隱性地轉化為索引型數據類型的變量。Boxing會影響代碼執行的性能,因此應當盡量避免,尤其是在數據量較大的時候。

假如要將一個打包的對象轉換回原來的值型變量,必須顯性地對它進行解包。解包需要二個步驟:首先對對象實例進行反省,確保它們是由值型的變量被包裝成的;第二步將實例中的值拷貝到值型變量中。為了確保解包成功,被解包的對象必須是通過打包一個值型變量的值生成的對象的索引。

  1. using System;  
  2. public class UnboxingTest  
  3. {  
  4. public static void Main()  
  5. {  
  6. int i = 123; //打包  
  7. object o = i; // 解包(必須是顯性的)  
  8. int j = (int) o;  
  9. Console.WriteLine("j: {0}", j); }  
  10. }  

錯誤2:結構與對象是有區別的

C++中的結構與類差不多,***的區別是,在缺省狀態下,結構的訪問權限是public,其繼續權限也是public.一些C++編程人員將結構作為數據對象,但這只是一個約定而非是必須這樣的。在C#中,結構只是一個用戶自定義的數據類型,并不能取代類。盡管結構也支持屬性、方法、域和操作符,但不支持繼續和destructor.

更重要的是,類是一種索引型數據類型,結構是值型數據類型。因此,結構在表達無需索引操作的對象方面更有用。結構在數組操作方面的效率更高,而在集合的操作方面則效率較低。集合需要索引,結構必須打包才適合在集合的操作中使用,類在較大規模的集合操作中的效率更高。

錯誤3:虛方法必須被明確地覆蓋

在C#語言中,編程人員在覆蓋一個虛方法時必須顯性地使用override關健字。假設一個Window類是由A公司編寫的,ListBox和RadioButton類是由B公司的和編程人員在購買的A公司編寫的Window類的基礎上編寫的,B公司的編程人員對包括Window類未來的變化情況在內的設想知之甚少。假如B公司的一位編程人員要在ListBox上添加一個Sort方法:

  1.   public class ListBox : Window  
  2.   { public virtual void Sort() {"}  
  3. }   

在A公司發布新版的Window類之前,這不會有任何問題。假如A公司的編程人員也在Window類中添加了一個Sort方法。

  1. public class Window  
  2. { // " public virtual void Sort() {"}  

在C++中,Windows類中的Sort方法將成為ListBox類中Sort方法的基礎方法,在期望調用Windows類中的Sort方法時,ListBox類中的Sort方法就會被調用。在C#中,虛擬函數總是被認為是虛擬調度的根。也就是說,一旦C#發現一個虛擬的方法,就不會再在虛擬鏈中查找其他虛擬方法。假如ListBox再次被編譯,編譯器就會生成一個警告信息:

  1. "class1.cs(54,24): warning CS0114: 'ListBox.Sort()' hides  
  2. inherited member 'Window.Sort()'. 

要使當前的成員覆蓋原來的方法,就需要添加override關健字,或者添加new關健字。要消除警告信息,編程人員必須搞清楚他想干什么??梢栽贚istBox類中的Sort方法前添加new,表明它不該當覆蓋Window中的虛方法:

  1. public class ListBox : Window {  
  2. public new virtual void Sort() {"}   

這樣就可以清除警告信息。假如C++編程人員確實期望覆蓋掉Window中的方法,就必須使用override關健字來顯性地表明其意圖。

責任編輯:chenqingxiang 來源: 人民郵電出版社
相關推薦

2010-01-25 18:26:44

CC++頭文件

2010-03-03 16:20:40

Android項目

2010-03-15 10:39:57

2010-01-08 10:41:56

JSON 數據

2010-01-25 18:19:17

C++特性

2010-01-25 18:19:17

C++特性

2010-01-25 18:19:17

C++特性

2010-01-11 14:13:03

C++學習方法

2010-01-14 13:39:45

Visual C++優

2010-01-15 19:34:25

C++設計

2010-01-11 09:56:07

C++編程實例

2010-01-12 10:40:22

C++程序員

2010-01-20 17:48:07

C++ 函數重載

2010-01-13 18:47:53

C++教程

2010-01-28 14:04:35

C++鏈表

2010-01-13 16:44:03

C++

2010-01-27 14:24:15

C++程序設計

2010-01-13 10:16:42

C++軟件

2010-01-12 17:55:03

C++程序

2010-01-15 17:18:57

C++源程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久成人免费视频 | 国产精品久久久久久福利一牛影视 | 人人擦人人 | 国产精品亚洲精品 | 一级毛片色一级 | caoporn国产 | 久久精品黄色 | 一区二区三区四区在线视频 | 91社区在线观看高清 | 嫩草一区二区三区 | 欧美在线一区二区三区 | 秋霞在线一区 | 国产aⅴ精品 | 久久久国产一区二区三区 | 国产精品久久久久无码av | av色噜噜| 久久综合av | 99视频 | av黄色在线观看 | 日韩欧美在线一区 | 国产精品久久久久久高潮 | 国产亚洲一区二区三区在线观看 | 伊人网综合 | 国产精品亚洲成在人线 | 亚洲欧美综合网 | 美女久久久 | 欧美日韩中文字幕在线播放 | 免费黄网站在线观看 | 国产精品成人久久久久 | 亚洲二区精品 | 日日爽| 91精品国产91久久久久游泳池 | 性视频网| 精品一区在线 | 欧美在线视频a | 黄色大片免费网站 | 中文字幕一区二区三区乱码图片 | 红桃视频一区二区三区免费 | 亚洲另类自拍 | yeyeav| 精品在线一区 |