本片部落格是作者在學習c++的過程中的筆記記錄,希望和各位讀者一起學習交流
<> 是使用標準的標頭檔案
「」是使用自己定義的標頭檔案,如果找不到自己定義的標頭檔案,就去找標準的標頭檔案,如果還找不到就報錯
c++為了和c區別,規定標頭檔案不使用.h
如:和第乙個是c++使用的
第二個是c使用的
目的:為了解決開發時的命名衝突的問題,c++引入了命名空間(namespace)
命名空間:
命名空間將全域性作用域分成不同的部分
不同命名空間中的識別符號可以同名而不會發生衝突
命名空間可以相互巢狀
全域性作用域也叫預設命名空間
namespace是c++中的關鍵字,用來定義乙個命名空間
用法:namespace name
name是命名空間的名字,它裡面可以包含變數、函式、類、typedef、#define 等,最後由包圍。
在使用命名空間中的變數的時候,要指明其所在的命名空間。
:: 稱為域解析操作符,用來指明要使用的命名空間
除了直接使用域解析操作符,還可以使用using關鍵字來宣告。
using既可以宣告命名空間中的部分關鍵字,也可以宣告全部全部的命名空間
1. 宣告命名空間中的部分名稱:using std::cout
2. 宣告整個命名空間:using namespace std;
這三個關鍵字有兩種使用的地方:
1. 對類中的成員進行訪問範圍的設定
2. 子類與父類之間的繼承方式
類中訪問許可權的設定
1. private:只能由該類中的函式,其友元函式訪問,不能別任何其他訪問,該類的物件也不能進行訪問
2. protected:可以被該類中的函式、子類中的函式以及友元函式訪問,但不能被該類的物件訪問
3. public:可以被該類中的函式、子類的函式、其友元函式訪問,也可以由該類的物件進行訪問
類的繼承:
1. private:父類中的所有方法在子類中變為private
2. protected:父類的protected和public方法在子類中變為protected,private方法不變
3. public:父類中的方法屬性變化
struct和class這兩個關鍵字都是進行資料型別的定義
在用struct關鍵字定義類時,所有成員的預設值是public
在用class關鍵字定義類時,所有成員的預設值是private
1. 增加了命名空間(namespace)
2. "實用性"增加
c語言中的變數都必須在作用域開始的位置進行定義
c++中強調語言的「實用性」,所有的變數都可以在需要的時候進行定義
3. register關鍵字(register關鍵字請求將其修飾的變數存放在暫存器中)
4. 變數檢測的增強
在c語言中,重複定義多個同名的全域性變數是合法的
在c++中,不允許定義多個同名的全域性變數
5. struct型別加強(可以完成和class一樣的功能)
c語言的struct定義了一組變數的集合,c編譯器不認為這是一種資料型別
c++中的struct是乙個新型別的定義宣告
6. c++中所有的變數和函式都必須有型別
在c語言中
int f();表示返回值為int,接受任意的引數
int f();表示返回值為int的無參函式
在c++中
int f()和 int f(void)都表示返回值為int的無參函式
7. 新增加了bool型別關鍵字
原始的c語言是沒有bool關鍵字的,在c99之後就可以支援bool關鍵字了
因此可以說bool是c++新增的關鍵字
8. 三目運算子:
a. 在c語言中,三目運算子的返回值是變數的值
在c++中,三目運算子返回的是變數的本身
b. 在c語言中,實現三目運算子的返回值做左值
左值:可以進行修改的記憶體空間(在c語言中,三目運算子不可以當左值,在c++中,三目運算子可以當左值)
*(a < b?&a:&b) = 30 首先表示式返回的是乙個位址,進行*運算可以進行修改位址中的內容
而在c++編譯器完成了取位址這步工作
const的基本用法
const int a; 代表乙個長整型數
int const b; 代表乙個長整型數
在c語言中不能進行直接修改,但是可以進行間接修改(即通過指標進行修改),因此const不起作用
但是在c++中const是乙個真正的常量,不能通過指標進行變數的修改
c語言中:
輸出值為:20 20
c++中:
輸出值為:10 20
出現這樣的原因是c++中有一張符號表(鍵值對的形式),程式進行執行的時候,產生一張這樣的表,不可以修改這張表,在執行** int *p = (int *)&a 的時候,會單獨的開闢一塊空間,讓p進行指向
const char *c(常指標); c是乙個指向常整型數的指標(所指向的記憶體資料不能被修改,但是本身可以被修改)
char * const d; d是指標常量(指標變數不能被修改,但是它所指向的記憶體空間可以被修改)
const char * const e; e是乙個指向常整型的常指標(指標和它所指向的記憶體空間,均不能被修改)
const分配空間的時間是在程式編譯期間進行分配的記憶體
const和define的區別
相同點:
都是進行常量替換
不同點:
const常量是由編譯器處理的,提供型別檢查和作用域檢查
巨集定義由預處理器處理,只是單純的文字替換
python學習第一天 基礎知識
注意 python裡面的變數不用定義。1 輸入函式 input 例如 2 輸出函式 print 注意區分與c和c 不同 c和c 中輸出用printf 表示 例如 1 輸出字串 print hello 2 輸出變數 a input print a 3 變數格式化輸出 需要將變數a變為int型別 3 拼...
R語言學習 第一天 基礎知識
r的起源 r是s語言的一種實現。r的許可證是gnu r用於統計分析 繪圖的語言和操作環境。r是一套完整的資料處理 計算和製圖軟體系統。c 建立向量 x1 c 2,4,6,8,10 length 計算向量長度 mode 判斷向量內資料型別 rbind x1,x2 按行組合矩陣 cbind x1,x2 ...
Linux一些基礎知識 第一天
中文輸入法的設定 1.linux環境 redhat 2.快捷鍵 tab鍵 自動補齊命令 crtl a游標移動到命令列首 crtl e游標移動到命令行尾 crtl u刪除游標以前的內容 crtl k刪除游標以及其之後的內容 crtl 左右鍵 以單詞為單位左右移動 crtl c終止某命令 crtl r搜...