二、c++對c的加強
2、「實用性」增加
3、struct型別加強
4、新增bool型別關鍵字
5、三目運算子的增強
這個物件有下面的兩種說法:
具體可以看看這篇文章
下面用一道程式設計題目來簡單說明一下:
題目:在c++環境下,編寫程式使其輸入乙個半徑值,求這個半徑對應的圓的面積?程式如下:
#include
"iostream"
using namespace std;
//使用命名空間 std 標準的命名空間 (在這個命名空間中定義了很多標準定義)
intmain()
這個程式裡面,採用自頂向下結構,很清晰。
#include
"iostream"
using namespace std;
/* 物件導向 */
class circle};
intmain()
namespace namespaceb
如何使用這個命名空間呢?
使用方式:using namespace+自定義命名空間名字
int
main()
1.2 命名空間相互巢狀namespace namespaceb;}
}
如何使用這個命名空間呢?
使用方式(針對結構體):using 自定義命名空間名字::巢狀命名空間名字::結構體型別;
int
main()
int
main()
}
int
main()
}
struct teacher
;
當在main
函式中這樣定義時teacher t1;
會報錯。正確:struct teacher t1;
struct teacher
;
在main
函式允許這樣定義:teacher t1;
bool名為布林型別,可取的值只有true和false,理論上bool只占用乙個位元組。
提問:那bool可以賦值嗎?
回答:執行bool=2
,編譯可以通過,但是bool輸出值為1不為2。
執行bool=-2
,編譯可以通過,但是bool輸出值為1不為-2。
執行bool=0
,編譯可以通過,但是bool輸出值為0。
總結:bool賦值時將非0值轉換為true,0值轉換為false。
int
main()
結果:會發現編譯器報錯。
原因:三目運算子返回的是變數的值,即執行(a>b? a:b)
得到的是b的值,20
。
int
main()
結果:會發現編譯器成功。
原因:三目運算子返回的是變數本身,即執行(a>b? a:b)
得到的是變數b
,之後變數b賦值為30
。
提問:那麼c++編譯器是如何實現的呢?
回答:1、從c的角度去分析,相當於(a>b? &a:&b)
。
2、從c++的角度分析,相當於c++編譯器手工去執行(a>b? &a:&b)
。
注意:上面所說的是從變數的角度,如果是(a>b? 1:2) = 30
,那麼無論是c還是c++編譯器,他們都會報錯。
當然,對於c++對c的優化與公升級遠遠不止上述介紹的那麼少,通過後續的學習將逐漸完善。
001c 入門程式
以前語言基礎不牢固 導致很多時候學習後續內容很吃力。物件 物件具有狀態和行為,是乙個具體的東西 類 類可以定義描述物件行為狀態的模板,是乙個抽象的概念 方法 即時變數 話不多上上程式 include 包含c 的標頭檔案 using namespace std 使用命名空間 std 標準的命名空間 在...
001 C 列舉型別
include using namespace std 列舉型別 enumeration 是c 中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。如果乙個變數只有幾種可能的值,可以定義為列舉 enumeration 型別。所謂 列舉 是指將變數的值一一枚舉出來,變數的值只能在列舉出來的值的...
c到c 的過渡
1.c到c 的過度 1 2.類和物件 2 3.繼承與派生 1 4.運算子過載 1 5.多型 1 6.函式模板與類模板 1 7.異常與檔案 1 c 的基本知識 8.stl 標準模板庫 2 9.設計模式 2 10.qt 2 mysql 1 1.彙編 低階語言 可以直接操作硬體 mov移植性差 第一代高階...