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

最新Visual Studio 2010代碼的簡介與說明

開發(fā) 后端
今天在辦公室下了很多Visual Studio 2010代碼。而我用的是VS2005,我在使用這些代碼時,基本上絕大部分基于VS2005Asp.net工程都因為少數(shù)文件無法轉(zhuǎn)換而無法加載工程,為此我也苦惱很久,后來終于讓我找到了解決辦法。

在這段實現(xiàn)的Visual Studio 2010代碼中,我們使用了一個move()函數(shù)來代替對象的賦值操作符“=”,move()只是簡單地接受一個右值引用或者左值引用作為參數(shù),然后直接返回相應(yīng)對象的右值引用。這一過程不會產(chǎn)生拷貝(Copy)操作,而只會將Visual Studio 2010代碼的源對象移動(Move)到目標對象。

auto關(guān)鍵字
在C++0x中,auto關(guān)鍵字的意義發(fā)生了改變: 它可以“從初始化器(initialize)中推導(dǎo)出所代表的變量的真正類型”。這種對auto關(guān)鍵字的使用方式可以大大消除當前冗長和易出錯的代碼。在這段代碼中,我們使用auto關(guān)鍵字來代替了真正的數(shù)據(jù)類型map<string, string>::iterator,這使得整個代碼自然而簡潔。#t#

另外,跟其他數(shù)據(jù)類型一樣,我們也可以對auto關(guān)鍵字進行修飾,例如添加const,指針(*),左值引用(&),右值引用(&&)等等,編譯器會根據(jù)auto類型所代表的真正的數(shù)據(jù)來決定這些修飾的具體含義。

為了兼容一些舊有的C++代碼,我們可以使用/Zc:auto這個編譯器選項,來告訴編譯器是采用auto關(guān)鍵字的原有定義還是在新標準C++0x中的定義。

右值引用
作為最重要的一項語言特性,右值引用(rvalue references)被引入到 C++0x中。我們可以通過操作符“&&”來聲明一個右值引用,原先在C++中使用“&”操作符聲明的引用現(xiàn)在被稱為左值引用。

  1. template <class T> swap(T& a, T& b)     
  2. {     
  3. T tmp(a);   // tmp對象創(chuàng)建后,我們就擁有了a的兩份拷貝     
  4. a = b;  // 現(xiàn)在我們擁有b的兩份拷貝     
  5. b = tmp;// 現(xiàn)在我們擁有a的兩份拷貝     
  6. }    
  7. template <class T> swap(T& a, T& b)  
  8. {  
  9. T tmp(a);   // tmp對象創(chuàng)建后,我們就擁有了a的兩份拷貝  
  10. a = b;  // 現(xiàn)在我們擁有b的兩份拷貝  
  11. b = tmp;// 現(xiàn)在我們擁有a的兩份拷貝  
  12. }   

在第一行Visual Studio 2010代碼中,我們將一個臨時對象int()綁定到一個左值引用,將產(chǎn)生一個編譯錯誤。而在第二行中,我們將臨時對象綁定到右值引用,就可以順利通過編譯。右值是無名的數(shù)據(jù),例如函數(shù)的返回值一般說來就是右值。當對右值進行操作的時候,右值本身往往沒有必要保留,因此在某些情況下可以直接“移動”之。通過右值引用,程序可以明確的區(qū)分出傳入的參數(shù)是否為右值,從而避免了不必要的拷貝,程序的效率也就得到了提高。我們考慮一個簡單的數(shù)據(jù)交換的小程序,從中來體會右值引用所帶來的效率提升。我們可以寫一個函數(shù)swap來實現(xiàn)兩個變量值的交換:

  1. #include "stdafx.h"     
  2. template <class T> 
  3. T&& move(T&& a)     
  4. {     
  5. return a;     
  6. }     
  7. template <class T> void swap(T& a, T& b)     
  8. {     
  9. T tmp(move(a)); // 對象a被移動到對象tmp,a被清空     
  10. a = move(b);// 對象b被移動到對象a,b被清空     
  11. b = move(tmp);  // 對象tmp被移動到對象b     
  12. }     
  13. int _tmain(int argc, _TCHAR* argv[])     
  14. {     
  15. int a = 1;     
  16. int b = 2;     
  17. swap(a, b);     
  18. return 0;     
  19. }   

在這段Visual Studio 2010代碼中,雖然我們只是為了進行簡單的數(shù)據(jù)交換,但是卻執(zhí)行了多次對象拷貝。這些對象的拷貝操作,特別是當這些對象比較大的時候,無疑會影響程序的效率。

 

責(zé)任編輯:chenqingxiang 來源: 華軍軟件
相關(guān)推薦

2009-12-02 15:32:13

Visual Stud

2010-03-26 16:23:07

Visual Stud

2009-11-30 13:17:23

Visual Stud

2009-12-11 15:31:17

Visual Stud

2009-12-02 09:43:38

Visual Stud

2009-09-07 09:22:17

Visual Stud代碼片段

2009-11-10 13:43:37

Visual Stud

2009-12-04 17:21:35

Visual Stud

2009-12-14 17:28:18

Visual Stud

2009-12-01 18:33:15

Visual Stud

2009-12-18 10:24:28

VS 2010代碼

2009-12-10 17:05:10

Visual Stud

2019-11-20 09:25:03

Visual Stud編程語言

2010-03-11 16:29:28

Visual Stud

2009-11-11 09:48:06

Visual Stud

2010-02-22 16:43:33

Visual Stud

2009-12-03 13:24:19

2009-11-24 13:23:11

Visual Stud

2009-11-30 15:21:38

Visual Stud

2009-11-06 16:36:37

Visual Stud
點贊
收藏

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