對(duì)C++設(shè)計(jì)說明介紹
下面進(jìn)行詳細(xì)說明C++設(shè)計(jì)的技巧和有關(guān)問題,首先介紹C++設(shè)計(jì)之前,先要了解什么是C++,其實(shí)C++是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言,它支持過程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)。
C語(yǔ)言是面向過程的。C++和C#、Java這3種語(yǔ)言都使用了類似C風(fēng)格的語(yǔ)法,但它們都是面向?qū)ο螅∣OP)的。C++是對(duì)C語(yǔ)言的一個(gè)擴(kuò)充,也就是說,一個(gè)C語(yǔ)言的程序,也可以認(rèn)為是一個(gè)C++程序(沒有用有任何的兼容性。到C++高級(jí)特性而已),C#和Java對(duì)C語(yǔ)言沒
1.1.2 內(nèi)存管理是否自動(dòng)釋放C++和C#、Java這3種語(yǔ)言中,C++是最早出現(xiàn)的,保持了對(duì)C的兼容性,允許指針的存在,允許程序員手動(dòng)高效地管理、使用內(nèi)存(盡管這也是最容易引起問題的地方)。#t#
C++在發(fā)展的過程中,不斷地補(bǔ)充語(yǔ)言特性,使得C++成為最靈活的編程語(yǔ)言之一。C++語(yǔ)言的靈活性是建立在其復(fù)雜的語(yǔ)法之上的,因此對(duì)于初學(xué)者來(lái)說,很有可能因此望而卻步,但是如果堅(jiān)持下去,就會(huì)發(fā)現(xiàn),再去看C#、Java語(yǔ)法時(shí)會(huì)感到很輕松。
C#、Java語(yǔ)言相對(duì)C++語(yǔ)言來(lái)說,在語(yǔ)法上要簡(jiǎn)單得多,因此初學(xué)者很容易上手。二者拋棄了最容易引起問題的指針,對(duì)內(nèi)存的管理完全自動(dòng)化,這樣雖然帶來(lái)了程序的穩(wěn)定性和安全性,但是在某種程度上丟失了效率。
提示:因?yàn)閮?nèi)存管理自動(dòng)化,C#、Java語(yǔ)言擁有垃圾自動(dòng)回收機(jī)制,在C++中,申請(qǐng)的內(nèi)存必須由程序員自己手動(dòng)釋放,如果忘記這一點(diǎn)就會(huì)引起內(nèi)存泄露。C++豐富的語(yǔ)言特性在一定程度上彌補(bǔ)了如下不足:
◆部分C++庫(kù)擁有內(nèi)存管理機(jī)制,如STL、Boost等。
◆C++設(shè)計(jì)擁有智能指針。
◆某些C++庫(kù)實(shí)現(xiàn)了垃圾回收功能。
實(shí)際上C#和Java在特性上也非常類似(不僅僅是語(yǔ)法)。二者都是為了更加方便地解決應(yīng)用問題,在GUI、數(shù)據(jù)庫(kù)訪問、網(wǎng)絡(luò)通信、多線程等和實(shí)際應(yīng)用密切相關(guān)的點(diǎn)上都有成熟的解決方案。
C++設(shè)計(jì)更多地靠第三方的庫(kù)來(lái)實(shí)現(xiàn)這些功能,因?yàn)?/SPAN>C++語(yǔ)言是一個(gè)國(guó)際標(biāo)準(zhǔn),要在C++中加入這些語(yǔ)言之外的、面向應(yīng)用的特性還需要很長(zhǎng)一段路要走。而C#、Java的擁有者是商業(yè)化公司,各種動(dòng)作自然要敏捷得多。
但是這并不意味著C++即將消亡(這樣的言論很多)。不可否認(rèn)的是C++在C#、Java的進(jìn)攻下,丟失了一些領(lǐng)域,但是C++仍然在普遍使用,很重要的原因就是因?yàn)?/SPAN>C++既保持了C語(yǔ)言級(jí)別的效率(某些情況下例外),又加入了面向?qū)ο蟮奶匦浴?/SPAN>