C++學習筆記 lesson1 C to C++

C++能提高程序的運行效率,節約更多的資源。
C++是編程語言的聯盟

bool

C語言中使用bool需要引<stdbool>,定義了0和1分別爲true和false

C++中 ,bool和int可以相互轉化

int -> bool 0爲false,非0爲true

bool -> int  true ==1 false==0 

const

將變量常量化,編譯器在語法層面上進行檢測。
使用#define 定義的都是真常量

域運算符 Domain Operator

#include<iostream> //標準C++庫

#include<stdio.h>//c 繼承來的

#include<cstdio>//C 繼承來,符合 C++標準

 int num =100;  //佔用全局空間

int main()

{

    int num =10; // 棧空間

   retrun 0;

}

域作用符 : :

當::前面爲空時代表全局空間

std::  命名空間爲std ,所有的函數和變量都是標準庫中的函數和變量


new和delete

在C語言中進行堆操作的時候調用的是malloc 和 free 

C++ 使用new 和 delete

int * pNum = new int (100) 分配一個int類型 的空間,並且值爲100

delete pNum;

int *pArray = new int [10]; // 分配連續的空間

delete[]p; // 釋放時爲數組


new 和 delete 是運算符

malloc和free是函數


Overloaded 重載

 重載可以使用相同的函數名,函數的參數是不同的

編譯器會根據參數類型來進行匹配,雖然函數名相同,其實上是完全不同的幾個函數

如何重載

編譯器會保存符號表,編譯器會知道當前變量,以及佔用的空間,解析方式(數據類型)

記錄函數的參數類型,然後二者匹配。把任何一個函數名進行命名粉碎,把函數名變成函數名加上參數類型來支持重載

函數參數的順序不一樣可以構成重載

重載讓我們非常方便的進行一系列的調用,同一個功能的函數不用起多個名字,解決了因爲數據類型不同出現的問題。

重載匹配規則

精準匹配    儘量使用

提升匹配         char -> int  float -> double

類型轉換匹配   int -> unsigned int 

重載使用過多會出問題,根據業務需求決定


默認實參

void MyCount(char *str , bool line="true")

必須出現在整個函數的最右邊,

二義性:編譯器無法找打與之對應的唯一函數

解決二義性:唯一匹配;調用時確定精確參數。


內聯函數

inline 

調用時,不會新建棧,將代碼展開,提高了運行的效率

生成的體積會膨脹。

根據棧的使用情況來解析,使用的空間不會佔用太多


C++風格類型轉換

 int num = static_cast<int>(1.0003);//不是強制轉換,表示轉換c++風格

 經常使用在基類指針指向派生類指針

 reinterpret_cast<> 強制轉換  二進制層面的轉換 

 

引用

在某一個方法之類修改方法之外的值,必須使用指針,指針使得已經要修改的數據類型變成了指針類型。

使用引用必須指向一個變量

int val =100;

int &refval = val;  //引用是變量的別名,沒有獨立空間,共用同一個空間。 (數據類型無法修改)

int *pVal = &val; // 指針擁有獨立空間, 指向某一個變量 弱關聯(指向的變量可修改)

const int num = 500;

const int& refnum = num ; //用const 引用接收  


按引用傳遞

將形參實參化。將參數作爲變量使用,作用於外部的

函數之間的值傳遞是通過棧來完成的 

將引用作爲返回值 ,傳遞類的需求使用引用來代替,但是引用無法指向堆空間,只有指針能指向

int &Index(int index)

{

   return array[index];

}       

發佈了103 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章