C++發(fā)展小結

姓名:于川皓 學號:16140210089

轉載自:https://www.zhihu.com/people/zheng-jian-2

【嵌牛導讀】:學習c++能給我們帶來什么?這值得我們思考

【嵌牛鼻子】:編程,c++語言,應用

【嵌牛提問】:C++的發(fā)展過程是什么樣子的?

【嵌牛正文】:

1971年,瑞士聯邦技術學院N.Wirth教授發(fā)明了Pascal語言。Pascal語言語法嚴謹,層次分明,程序易寫,具有很強的可讀性,是第一個結構化的編程語言。

20世紀70年代中期,Bjarne Stroustrup在劍橋大學計算機中心工作。他使用過Simula和ALGOL,接觸過C。他對Simula的類體系感受頗深,對ALGOL的結構也很有研究,深知運行效率的意義。既要編程簡單、正確可靠,又要運行高效、可移植,是Bjarne Stroustrup的初衷。以C為背景,以Simula思想為基礎,正好符合他的設想。1979年,Bjame Sgoustrup到了Bell實驗室,開始從事將C改良為帶類的C(C with classes)的工作。1983年該語言被正式命名為C++。自從C++被發(fā)明以來,它經歷了3次主要的修訂,每一次修訂都為C++增加了新的特征并作了一些修改。第一次修訂是在1985年,第二次修訂是在1990年,而第三次修訂發(fā)生在c++的標準化過程中。在20世紀90年代早期,人們開始為C++建立一個標準,并成立了一個ANSI和ISO(Intemational Standards Organization)國際標準化組織的聯合標準化委員會。該委員會在1994年1月25曰提出了第一個標準化草案。在這個草案中,委員會在保持Stroustrup最初定義的所有特征的同時,還增加了一些新的特征。

在完成C++標準化的第一個草案后不久,發(fā)生了一件事情使得C++標準被極大地擴展了:Alexander stepanov創(chuàng)建了標準模板庫(Standard Template Library,STL)。STL不僅功能強大,同時非常優(yōu)雅,然而,它也是非常龐大的。在通過了第一個草案之后,委員會投票并通過了將STL包含到C++標準中的提議。STL對C++的擴展超出了C++的最初定義范圍。雖然在標準中增加STL是個很重要的決定,但也因此延緩了C++標準化的進程。

委員會于1997年11月14日通過了該標準的最終草案,1998年,C++的ANSI/IS0標準被投入使用。通常,這個版本的C++被認為是標準C++。所有的主流C++編譯器都支持這個版本的C++,包括微軟的Visual C++和Borland公司的C++Builder。[3-6]

編程開發(fā)

編輯

集成開發(fā)環(huán)境(IDE)

C++代碼(2張)

Visual Studio (Visual C++)

C++ Builder

kDevelop

Anjuta

Code::Blocks:開放源碼的全功能的跨平臺C/C++集成開發(fā)環(huán)境[7]。

Visual Mingw

Ideone

Eclipse CDT

Compilr

Code Lite

Netbeans C++[8]

集成開發(fā)環(huán)境(IDE),功能齊全,調試功能很強,程序編好后,可以立刻在環(huán)境中調試以獲得初步測試結果,然后,可以方便地做成beta版形式,拿到實際環(huán)境中進一步測試,最后做成軟件發(fā)行版。[9]

編譯器

Dev C++

Ultimate++

Digital Mars

C-Free

MinGW

Tiny C Compiler[8]

語言特點

編輯

支持數據封裝和數據隱藏

在C++中,類是支持數據封裝的工具,對象則是數據封裝的實現。C++通過建立用戶定義類支持數據封裝和數據隱藏。

在面向對象的程序設計中,將數據和對該數據進行合法操作的函數封裝在一起作為一個類的定義。對象被說明為具有一個給定類的變量。每個給定類的對象包含這個類所規(guī)定的若干私有成員、公有成員及保護成員。完好定義的類一旦建立,就可看成完全封裝的實體,可以作為一個整體單元使用。類的實際內部工作隱藏起來,使用完好定義的類的用戶不需要知道類是如何工作的,只要知道如何使用它即可。

支持繼承和重用

在C++現有類的基礎上可以聲明新類型,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程序結構,明確類間關系,并且充分利用已有的類來完成更復雜、深入的開發(fā)。新定義的類為子類,成為派生類。它可以從父類那里繼承所有非私有的屬性和方法,作為自己的成員。

支持多態(tài)性

采用多態(tài)性為每個類指定表現行為。多態(tài)性形成由父類和它們的子類組成的一個樹型結構。在這個樹中的每個子類可以接收一個或多個具有相同名字的消息。當一個消息被這個樹中一個類的一個對象接收時,這個對象動態(tài)地決定給予子類對象的消息的某種用法。多態(tài)性的這一特性允許使用高級抽象。

繼承性和多態(tài)性的組合,可以輕易地生成一系列雖然類似但獨一無二的對象。由于繼承性,這些對象共享許多相似的特征。由于多態(tài)性,一個對象可有獨特的表現方式,而另一個對象有另一種表現方式。[10]

工作原理

編輯

C++語言的程序因為要體現高性能,所以都是編譯型的。但其開發(fā)環(huán)境,為了方便測試,將調試環(huán)境做成解釋型的。即開發(fā)過程中,以解釋型的逐條語句執(zhí)行方式來進行調試,以編譯型的脫離開發(fā)環(huán)境而啟動運行的方式來生成程序最終的執(zhí)行代碼。[9]

生成程序是指將源碼(C++語句)轉換成一個可以運行的應用程序的過程。如果程序的編寫是正確的,那么通常只需按一個功能鍵,即可搞定這個過程。該過程實際上分成兩個步驟。

第一步是對程序進行編譯,這需要用到編譯器(compiler)。編譯器將C++語句轉換成機器碼(也稱為目標碼);如果這個步驟成功,下一步就是對程序進行鏈接,這需要用到鏈接器(linker)。鏈接器將編譯獲得機器碼與C++庫中的代碼進行合并。C++庫包含了執(zhí)行某些常見任務的函數(“函數”是子程序的另一種稱呼)。例如,一個C++庫中包含標準的平方根函數sqrt,所以不必親自計算平方根。C++庫中還包含一些子程序,它們把數據發(fā)送到顯示器,并知道如何讀寫硬盤上的數據文件。[11]

學習指南

編輯

入門書籍

《C++程序設計教程》,錢能

《易學C++》,潘嘉杰

《大話設計模式》,程杰

《C++編程規(guī)范:101條規(guī)則、準則與最佳實踐》,劉基誠

《C和C++程序員面試秘籍》,董山海

進階書籍

《C++程序設計語言》英文第四版,Bjarne Stroustrup

《C++ Primer 第5版(英文版)》,Stanley Lippman、Josee Laoie、Barbara Moo

《C++標準庫:自學教程與參考手冊(第2版)(英文版)》,Nicolai Josuttis

《C++ Concurrency in Action|C++ 并發(fā)實戰(zhàn)》,Anthony Wiliams

《C和C++安全編碼(第2版)(英文版)》,Robert Seacord[12]

語言基礎

編輯

基本類型

數據類型指明變量或表達式的狀態(tài)和行為,數據類型決定了數的取值范圍和允許執(zhí)行的運算符集。c++語言數據類型可以分為兩大類:基本類型和引用類型?;绢愋褪侵覆荒茉俜纸獾臄祿愋停鋽祿诤瘮档恼{用中是以傳值方式工作的;引用類型有時也稱復合類型,它是可以分解為基本類型的數據類型,其數據在函數調用中是以傳址方式來工作的。[13]

整型

整數常量

整數常量是不帶小數的數值,用來表示正負數。例2—2中Ox55、0x55ff、1000000都是c++語言的整數常量。

c++語言的整數常量有三種形式:十進制、八進制、十六迸制。

(1)十進制整數是由不以0開頭的0~9的數字組成的數據。

(2)八進制整數是由以0開頭的0~7的數字組成的數據。

(3)十六進制整數是由以0x或0x開頭的0~9的數字及A~F的字母(大小寫字母均可)組成的數據。

例如:

0,63,83是十進制數。

00,077,0123是八進制數。

0x0,Ox0,0x53,0x53,0x3f,0x3f是十六進制數。

整數常量的取值范圍是有限的,它的大小取決于此類整型數的類型,與所使用的進制形式無關。

整型變量類型

整型變量類型有byte,short,int,long四種說明符,它們都是有符號整型變量類型。

(1)byte類型。

byte類型說明一個帶符號的8位整型變量。由于不同的機器對多字節(jié)數據的存儲方式不同,可能是從低字節(jié)向高字節(jié)存儲,也可能是從高字節(jié)向低字節(jié)存儲。這樣,在分析網絡協議或文件格式時,為了解決不同機器上的字節(jié)存儲順序問題,用byte類型來表示數據是合適的。

(2)short類型。

short類型說明一個帶符號的16位整型變量。short類型限制了數據的存儲應為先高字節(jié),后低字節(jié)。

(3)int類型。

int類型說明一個帶符號的32位整型變量。int類型是一種最豐富、最有效的類型。它最常用于計數、數組訪問和整數運算。

(4)long類型。

long類型說明一個帶符號的64位整型變量。對于大型計算,常常會遇到很大的整數,并超出int所表示的范圍,這時要使用long類型。

浮點型

浮點數常量

浮點數是帶有小數的十進制數,可用一般表示法或科學記數法表示。0.23f、0.7e-3都是c++語言的浮點數常量。

(1)一般表示法:十進制整數+小數點+十進制小數。

(2)科學記數法:十進制整數+小數點+十進制小數+E(或e)+正負號+指數。

例如:3.14159,0.567,9777.12是一般表示法形式,1.234e5,4.90867e-2是科學記數法形式。

c++語言的浮點數常量在機器中有單精度和雙精度之分。單精度以32位形式存放,用f/F做后綴標記(可以省略);雙精度則以64位形式存放。當一個浮點數常量沒有特別指定精度時,則它為雙精度浮點數常量。

浮點變量類型

浮點變量也稱實數變量,用于需要精確到小數的函數運算中,有float和double兩種類型說明符。

(1)float類型。

float類型是一個位數為32位的單精度浮點數。它具有運行速度較快,占用空間較少的特點。

(2)double類型。

double類型是一個位數為64的雙精度浮點數。雙精度數在某些具有優(yōu)化和高速運算能力的現代處理機上運算比單精度數快。雙精度類型double比單精度類型float具有更高的精度和更大表示范圍,常常使用。

字符型

字符型常量

字符型常量是指由單引號括起來的單個字符。

例如:’a’,’A’,’z’,‘$’,’?’。

注意:’a’和’A’是兩個不同的字符常量。

除了以上形式的字符常量外,c++語言還允許使用一種以“\”開頭的特殊形式的字符常量。這種字符常量稱為轉義字符,用來表示一些不可顯示的或有特殊意義的字符。

字符型變量

字符型變量的類型說明符為char,它在機器中占8位,其范圍為0~255。

注意:字符型變量只能存放一個字符,不能存放多個字符,例如:

1

chara='am';

這樣定義賦值是錯誤的。

布爾型

布爾常量

布爾常量只有兩個值:“true”和“false”,表示“真”和“假”,均為關鍵詞,在機器中位長為8位。

布爾型變量

布爾型變量的類型說明符為booI,用來表示邏輯值。[14]

運算符與表達式

C++語言中定義了豐富的運算符,如算術運算符、關系運算符、邏輯運算符等等,有些運算符需要兩個操作數,使用形式為

<操作數1>運算符<操作數2>

這樣的運算符稱為二元運算符(或二目運算符)。另一些運算符只需要一個操作數,稱為一元運算符(或單目運算符)。

運算符具有優(yōu)先級與結合性。當一個表達式包含多個運算符時,先進行優(yōu)先級高的運算,再進行優(yōu)先級低的運算。如果表達式中出現了多個相同優(yōu)先級的運算,運算順序就要看運算符的結合性了。所謂結合性,是指當一個操作數左右兩邊的運算符優(yōu)先級相同時,按什么樣的順序進行運算,是自左向右,還是自右向左。例如,我們熟悉的算術表達式6+5-2中,“+”、 “-”是同級運算符,那么是先算5-2,還是先算6+5?這就取決于算術運算符的結合性。由于算術運算符的結合性為自左向右,所以應先算6+5,然后再算11-2。

算術運算符與算術表達式

C++中的算術運算符包括基本的算術運算符和自增、自減運算符。由算術運算符、操作數和括號構成的表達式稱為算術表達式。

基本算術運算符有:+()、-(減或負號)、*(乘)、/(除)、%(取余)。其中“-”作為負號時為一元運算符,其余都為二元運算符。這些基本算術運算符的意義與數學中相應符號的意義是一致的。它們之間的相對優(yōu)先級關系與數學中的也是一致的,即先乘除、后加減,同級運算自左向右進行。使用算術運算符要注意以下幾點:

①“%”是取余運算,只能用于整型操作數。表達式a%b的結果為a/b的余數。 “%”的優(yōu)先級與“/”相同。

②當“/”用于兩整型操作數相除時,其結果取商的整數部分,小數部分被自動舍棄。因此,表達式1/2的結果為0,這一點需要特別注意。

⑧C++中的“++” (自增)、 “--” (自減)運算符是使用方便且效率很高的兩個運算符,它們都是一元運算符。這兩個運算符都有前置和后置兩種使用形式

無論寫成前置或后置的形式,它們的作用都是將操作數的值增1(減1)后,重新寫回該操作數在內存中的原有位置。所以,如果變量i原來的值是1,計算表達式i++后,表達式的結果為2,并且i的值也被改變?yōu)?。但是,當自增、自減運算的結果要被用于繼續(xù)參與其它操作時,前置與后置時的情況就完全不同了。例如,如果i的值為l,則下列兩條語句的執(zhí)行結果是不一樣的:

1

2cout<

cout<<++i;

第一條語句首先輸出i當前的值1,然后i自增,其值變?yōu)?;第二條語句首先使i自增為2,然后輸出i的值2。

賦值運算符與賦值表達式

C++提供了幾個賦值運算符,最簡單的賦值運算符就是“=”。帶有賦值運算符的表達式被稱為賦值表達式。例如,m=m+6就是一個賦值表達式。賦值表達式的作用就是將等號右邊表達式的值賦給等號左邊的對象。賦值表達式的類型為等號左邊對象的類型,表達式的結果為等號左邊對象被賦值后的值,運算的結合性為自右向左。請看下列賦值表達式的例子。

1

n=1

表達式值為1。

1

a=b=c=2

這個表達式從右向左運算,在c被更新為2后,表達式c=2的值為2,接著b的值被更新為2,最后a被賦值為2。

1

a=3+(c=4)

表達式值為7,a的值為7,c為4。

除了“=”以外,C++還提供了10種復合的賦值運算符:+=,-=,*=,/=,%=,<<=,>>=,&=,“=,|=。其中,前五個運算符是賦值運算符與算術運算符復合而成的,后五個是賦值運算符與位運算符復合而成的。關于位運算,稍后再做介紹。這里10種運算符的優(yōu)先級與“=”相同,結合性也是自右向左。現在舉例說明復合賦值運算符的功能。

1

2b+=2;//等價于b=b+2

x*=y+3;//等價于x=x*(y+3)

1

如果在賦值表達式后面加上分號,便成為了賦值語句。例如:

b=b+2:便是一個賦值語句,它實現的功能與賦值表達式相同。賦值表達式與賦值語句的不同點在于:賦值表達式可以作為一個更復雜表達式的一部分,繼續(xù)參與運算;而賦值語句不能。

逗號運算符與逗號表達式

在C++中,逗號也是一個運算符,它的使用形式為

<表達式1>,<表達式2>,…,<表達式n>求解順序為,先求解表達式1,再求解表達式2,最后求解表達式n的值。逗號表達式的最終結果為表達式n的值。例如:

1

x=2*5,x*4

表達式的結果為40。

關系運算符和關系表達式

關系運算符即比較符。

用關系運算符將兩個表達式連接起來就是關系表達式。關系表達式是一種最簡單的邏輯表達式。例如:

1

2

3x>5

x+y<=20

c==a+b

注意“==”(等于)是連續(xù)的兩個等號,不要誤寫為賦值運算符“=”。

關系表達式一般用于判斷是否符合某一條件。關系表達式的結果類型為bool,值只能是true或false。條件滿足為true,條件不滿足為false。例如,當x=t時,x>5的結果就為false。

邏輯運算符與邏輯表達式

只有簡單的關系比較是遠不能滿足編程需要的,還需要用邏輯運算符將簡單的關系表達式連接起來構成較復雜的邏輯表達式。邏輯表達式的結果類型也為bool,值只能為true或false。

“!”是一元運算符,使用形式是: !操作數。非運算的作用是對操作數取反。如果操作數a的值為true,則表達式!a的值為false:如果操作數a的值為false,則表達式!a的值為true。

“&&”是二元運算符。“&&”運算的作用是求兩個操作數的邏輯與。只有當兩個操作數的值都為true時,與運算的結果才為true,其它情況下與運算的結果均為false。

“||”也是二元運算符。 “||”運算的作用是求兩個操作數的邏輯或。只有當兩個操作數的值都為false時,或運算的結果才為false,其它情況下或運算的結果均為true。[15]

類和對象

類所表示的一組對象十分相似,可以作為模板來有效的創(chuàng)建對象,利用類可以產生很多的對象類所代表的事物或者概念都是抽象的。在存取Private類型數據或者函數的時候,只有類本身聲明的函數才是被允許的。類在與外部連接時,利用的就是Public共有類型函數,任何外部函數的訪問都是運行的。

對象主要是對客觀事物的某個實體進行描述,它作為一個單位,共同組成了系統(tǒng),它的組成是一組屬性和一組服務,這組服務操作于這組屬性。屬性和服務是對象構成眾多要素中的兩種,屬性的實質是一個數據項,主要是對對象靜態(tài)特性進行描述,服務的實質是一個操作序列,主要是對對象動態(tài)特征進行描述。[16]

關鍵字

關鍵字(keyword)是整個語言范圍內預先保留的標識符。每個C++關鍵字都有特殊的含義。經過預處理后,關鍵字從預處理記號(preprocessing-token)中區(qū)出來,剩下的標識符作為記號(token),用于聲明對象、函數、類型、命名空間等。不能聲明與關鍵字同名的標識符。

各個版本的ISO C++都規(guī)定以下劃線接大寫字母起始的標識符保留給實現。編譯器可以用這些保留標識符作為擴展關鍵字,這不保證可移植性。以下討論ISO C++所保留的關鍵字。

ISO C++ 98 關鍵字共63個,此處嚴格按標準原文排版:[17]

asm

do

if

return

typedef

auto

double

inline

short

typeid

bool

dynamic_cast

int

signed

typename

break

else

long

sizeof

union

case

enum

mutable

static

unsigned

catch

explicit

namespace

static_cast

using

char

export

new

struct

virtual

class

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

register

true

delete

goto

reinterpret_cast

try

語言標準

編輯

C++ 98 標準

C++標準第一版,1998年發(fā)布。正式名稱為ISO/IEC 14882:1998[18]。

C++ 03 標準

C++標準第二版,2003年發(fā)布。正式名稱為ISO/IEC 14882:2003[19]。

C++ 11 標準

C++標準第三版,2011年8月12日發(fā)布。正式名稱為ISO/IEC 14882:2011[20]。

C++11對容器類的方法做了三項主要修改。

首先,新增的右值引用使得能夠給容器提供移動語義。其次,由于新增了模板類initilizer_list,因此新增了將initilizer_list作為參數的構造函數和賦值運算符。第三,新增的可變參數模板(variadic template)和函數參數包(parameter pack)使得可以提供就地創(chuàng)建(emplacement)方法。[21]

C++ 14 標準

C++標準第四版,2014年8月18日發(fā)布。正式名稱為ISO/IEC 14882:2014[22]。

C++14是C++11的增量更新,主要是支持普通函數的返回類型推演,泛型 lambda,擴展的 lambda 捕獲,對 constexpr 函數限制的修訂,constexpr變量模板化等[23]。

技術應用

編輯

科學計算

在科學計算領域,FORTRAN是使用最多的語言之一。但是C++憑借先進的數值計算庫、泛型編程等優(yōu)勢在這一領域也應用頗多。

網絡軟件

C++擁有很多成熟的用于網絡通信的庫,其中最具有代表性的是跨平臺的、重量級的ACE庫,該庫可以說是C++語言最重要的成果之一,在許多重要的企業(yè)、部門甚至是軍方都有應用。

操作系統(tǒng)

在該領域,C語言是主要使用的編程語言。但是C++憑借其對C的兼容性,面向對象性質也開始在該領域有一席之地。[24]

語言評價

編輯

C++是在C語言的基礎上開發(fā)的一種面向對象編程語言,應用非常廣泛。常用于系統(tǒng)開發(fā),引擎開發(fā)等應用領域,支持類、封裝、繼承、多態(tài)等特性。C++語言靈活,運算符的數據結構豐富、具有結構化控制語句、程序執(zhí)行效率高,而且同時具有高級語言與匯編語言的優(yōu)點。[25]

C++語言是對C語言的擴充,從Simula中吸取了類,從ALGOL語言中吸取了運算符的一名多用、引用和在分程序中任何位置均可說明變量,綜合了Ada語言的類屬和Clu語言的模塊特點,形成了抽象類,從Ada Clu和ML等語言吸取了異常處理,從BCPL語言中吸取了用//表示注釋C++語言保持了C語言的緊湊靈活、高效以及易于移植性強等優(yōu)點,它對數據抽象的支持主要在于類概念和機制,對面向對象風范的支持主要通過虛擬機制函數因C++語言既有數據抽象和面向對象能力,運行性能高,加上C語言的普及,而從C語言到C++語言的過渡較為平滑,以及C++語言與C語言的兼容程度可使數量巨大的C語言程序能方便地在C++語言環(huán)境中復用,使C++語言在短短幾年內能流行。[26]

常見問題

編輯

問題1:學習C++大約需要多久?有些書籍上說幾十天就能學會C++這是真的嗎?

回答:在高校中安排的C++課程約為半年至一年左右,但事實上要精通C++,這點時間是遠遠不夠的。C++并不只是一門簡單的計算機語言,而是逐漸形成了一個學科體系。要熟練運用C++,做出界面美觀、功能強大的程序,還必須對數據結構、STL、設計模式等各個專題進行深入學習。因此,學習C++所需時間取決于學習者本身的基礎和期望達到的學習效果。如果一位零基礎的初學者要掌握C++語言本身的所有特性,1~2年的時間是比較正常的。至于說幾十天能夠學會C++,對于已經精通其他計算機語言的學習者來說也是可能的。

問題2:學習C++需要什么樣的數學和英語水平?學歷較低可以學C++么?

回答:學習程序設計必然會用到數學和英語。至少輸入的代碼基本都是英文字母,我們要用的算法多少和數學、邏輯學有些關系。因此,徹底沒有數學和英語基礎就學習程序設計真的很困難。一般認為,有初中或以上的數學和英語基礎就可以學習程序設計了。在現實中,很多中學生已經成為了編程高手。如果已經忘記以前所學的數學和英語知識,建議略花一些時間去回顧一下。數學和英語對學習程序設計還是有莫大的裨益。數學能夠鍛煉一個人的邏輯思維能力,使接受算法的速度更快;英語則有助于學習者看懂計算機的反饋信息、閱讀更多原版的技術資料。

問題3:以前學習過程序設計,時間長都忘記了,現在不從事計算機行業(yè)。隨著年齡增加,學習能力和記憶力都可能有所減弱,這樣能學習C++么?

回答:學習能力和記憶力的確會隨年齡受到影響。但是學習C++本來就是一個周期相對較長的過程,最重要的是保持學習的熱情和耐心。C++語言的基礎部分已經基本固定,不會經常發(fā)生重大變化,因此即使年齡稍大,經過努力后掌握C++是完全可能的。

問題4:很多網友說學習C++之前要學C語言,是這樣嗎?

回答:C語言的部分語法的確與C++相似甚至相同。如果有C語言的基礎學習C++肯定會更快。但是,這并不意味著學習C++之前必須要學C語言,而且對于初學者來說在短時間內接觸這兩種語言反而會造成部分概念的混淆。因此,如果你的目標是C++而不是C語言,那么不必特意在學習C++之前先去學C語言。

問題5:現在學習C++主要有哪些集成開發(fā)環(huán)境?哪個最適合初學者?

回答:首先需要說明的是,集成開發(fā)環(huán)境和編譯器又不是一回事情。通常集成開發(fā)環(huán)境可以搭配一種或多種編譯器。編譯器的功能是將C++源程序轉變成可執(zhí)行的程序,而集成開發(fā)環(huán)境則是一系列代碼編輯、調試和管理工具。目前Windows操作系統(tǒng)下使用比較廣泛的集成開發(fā)環(huán)境有微軟的Visual Studio(包括6.0版、2010版和2012版等)、Dev-C++、Eclipse、Code::Blocks等。從集成開發(fā)環(huán)境的界面友好程度來看,微軟的Visual Studio有著不小的優(yōu)勢。并且Visual Studio的市場占有率也是非常高的,很多院校、培訓機構、企業(yè)都在使用。因此,建議有條件的初學者優(yōu)先選用Visual Studio。如果實在無法安裝Visual Studio,那么Dev-C++或Code::Blocks也可以作為替代。

問題6:如何保持學習C++的積極性和熱情?

回答:對于大多數初學者來說,學習C++語言還是有一定難度的。因此,必須要掌握好學習的速度和節(jié)奏,不要對自己產生過大的壓力。有些讀者說只需要3周就能把小半本書看完,可是剩下的那部分卻始終看不進去。事實上這說明了前面的小半本書還沒有完全消化吸收——暴飲暴食自然就要沒胃口了。建議初學者不要貪急貪快,那樣很容易毀掉自己的學習熱情。如果為自己訂制了一個相對長期的、寬松的學習計劃,反而更容易培養(yǎng)自己的積極性。

問題7:零基礎的初學者應該學VB還是學C++?

回答:不得不承認,用Visual Basic制作一個Windows窗口界面的程序比C++方便得多。因此,初學者可能在學習Visual Basic的時候覺得更容易,更有成就感。Basic和C++屬于計算機高級語言中的兩支路線,各有所長。但是,從計算機高級語言的發(fā)展趨勢來說,C++更具有代表性。如果只是想了解一下程序設計,學習Visual Basic也未嘗不可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,661評論 1 51
  • ?1 C語言程序的結構認識 用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使讀者對c語...
    CONLYOUC閱讀 8,869評論 9 66
  • 清明假期的第一天。本想睡個懶覺放松放松的,由于昨天海外的教授睡覺前說有事兒要在網上交代,根據時差換算好時間后,決定...
    燒魚小將要成長閱讀 567評論 0 1
  • 1. 也許你現在正在處于一個陌生的環(huán)境,生活很單調,朋友很少,甚至單身很多年,糊里糊涂的過日子。也不看書,更不愛運...
    親愛的鄒不二閱讀 262評論 0 1
  • 時間的沙漏沉淀著無法逃離的過往,記憶的雙手總是拾起那些明媚的憂傷,青春的羽翼劃破曾經的留戀;昨日的淚水,激起心中的...
    于末一閱讀 468評論 1 2

友情鏈接更多精彩內容