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

最新Visual Studio 2010代碼的簡(jiǎn)介與說明

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

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

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

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

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

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

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

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

  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)); // 對(duì)象a被移動(dòng)到對(duì)象tmp,a被清空     
  10. a = move(b);// 對(duì)象b被移動(dòng)到對(duì)象a,b被清空     
  11. b = move(tmp);  // 對(duì)象tmp被移動(dòng)到對(duì)象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代碼中,雖然我們只是為了進(jìn)行簡(jiǎn)單的數(shù)據(jù)交換,但是卻執(zhí)行了多次對(duì)象拷貝。這些對(duì)象的拷貝操作,特別是當(dāng)這些對(duì)象比較大的時(shí)候,無疑會(huì)影響程序的效率。

 

責(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-01 18:33:15

Visual Stud

2009-12-14 17:28:18

Visual Stud

2009-12-18 10:24:28

VS 2010代碼

2010-03-11 16:29:28

Visual Stud

2009-12-10 17:05:10

Visual Stud

2019-11-20 09:25:03

Visual Stud編程語(yǔ)言

2010-02-22 16:43:33

Visual Stud

2009-11-11 09:48:06

Visual Stud

2009-12-03 13:24:19

2010-02-05 09:06:17

Visual Stud

2009-04-23 14:05:28

Visual Stud歷史調(diào)試功能

2009-12-01 18:50:57

Visual Stud
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 色综合久久天天综合网 | 日韩五月天 | 欧美日韩中文国产一区发布 | 日本三级全黄三级三级三级口周 | 91精品中文字幕一区二区三区 | 二区在线观看 | 亚洲一区二区在线视频 | 中日韩毛片| 亚洲成人综合网站 | 成人超碰在线 | 亚洲国产成人av好男人在线观看 | 2018中文字幕第一页 | 国产激情视频在线 | 国产精品毛片一区二区在线看 | 国产一区二区精品在线观看 | 欧美精品一区二区在线观看 | 国产精品视频偷伦精品视频 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 亚洲精彩视频 | 久久国产免费看 | 丝袜美腿一区二区三区 | 日韩成人在线免费视频 | 手机在线一区二区三区 | 精品国产18久久久久久二百 | 中文字幕精品一区二区三区在线 | 99精品视频一区二区三区 | 久精品视频| 国产亚洲精品久久久久久豆腐 | 久久国产免费 | 伊人在线| 国产精品嫩草影院精东 | 精品视频久久久久久 | 日韩精品在线观看视频 | 少妇午夜一级艳片欧美精品 | 国产一区二区电影 | 欧美激情黄色 | 亚洲成人观看 | 一区二区三区电影在线观看 | 一区二区三区欧美在线 | 视频在线观看亚洲 | 国产在线观看一区二区 |