1. 程式人生 > >C++的一些基本用法

C++的一些基本用法

這篇部落格可能不是像通常的程式設計書籍一樣,從“hello world”進行一個視覺化的一個例程,主要就是對一些C++的特性,包括關鍵字的一些理解,也是用到一個整理一個,所以邏輯性和連貫性可能不是很好,純粹作為C++的一個知識積累,如果當中有不正確的地方,還請批評指正!

1.typedef

關鍵字typedef能夠建立型別的別名

typedef double real; //make real another number for double

也可以作為函式指標的別名

typedef const double *(*p_fun)(const double *, int); //p_fun now a type name

2.union

1、什麼是聯合?

“聯合”是一種特殊的類,也是一種構造型別的資料結構。在一個“聯合”內可以定義多種不同的資料型別, 一個被說明為該“聯合”型別的變數中,允許裝入該“聯合”所定義的任何一種資料,這些資料共享同一段記憶體,已達到節省空間的目的(還有一個節省空間的型別:位域)。 這是一個非常特殊的地方,也是聯合的特徵。另外,同struct一樣,聯合預設訪問許可權也是公有的,並且,也具有成員函式。

2、聯合與結構的區別?

“聯合”與“結構”有一些相似之處。但兩者有本質上的不同。在結構中各成員有各自的記憶體空間, 一個結構變數的總長度是各成員長度之和(空結構除外,同時不考慮邊界調整)。而在“聯合”中,各成員共享一段記憶體空間, 一個聯合變數的長度等於各成員中最長的長度。應該說明的是, 這裡所謂的共享不是指把多個成員同時裝入一個聯合變數內, 而是指該聯合變數可被賦予任一成員值,但每次只能賦一種值, 賦入新值則衝去舊值。

3.inline

C++的行內函數,主要是C++為提高執行速度所做的一項改進,通常普通的函式在程式呼叫的時候,是像閱讀註腳一樣,從正文中跳到這一頁的末端,然後再回到正文。行內函數相當於在正文中直接劃出一部分割槽域作為註釋,那麼在閱讀文章時也就不需要跳來跳去,但是也會存在一個問題,如果同一個註釋(行內函數)需要使用10遍,那麼就要在在正文中劃出10個對應的空間給它,速度雖然有所提升,但是是以記憶體開銷的增加作為代價的,所以一般行內函數的定義不宜過長。

要使用這項特性,要採取下列措施之一:

在函式宣告前加上關鍵字inline;
在函式定義前加上關鍵字inline;

通常做法是省略原型,將整個定義(即函式頭和所有函式程式碼)放在本應提供函式原型的地方。

3.class

類宣告類似結構宣告,可以包括資料成員和函式成員。宣告私有部分,在其中宣告的成員只能通過成員函式進行訪問;宣告還具有共有部分,在其中宣告的成員可被使用類物件的程式直接訪問。通常,資料成員放在私有部分,成員函式放在公有部分中,因此,典型的類宣告格式如下:

class className
{
private:
    data_member declarations
public:
    member function prototypes
};

4.標頭檔案管理

在同一個檔案中只能將同一個標頭檔案包含一次,記住這個規則很容易,但很可能在不知情的情況下將標頭檔案包含多次。例如,可能使用包含了另外一個頭檔案的標頭檔案。有一種C++技術可以避免多次包含同一個標頭檔案、它是基於前處理器編譯指令#ifndef(即if not defined)的。下面的程式碼片段意味著僅當以前沒有使用前處理器編譯指令#define定義名稱COORDIN_H_時,才處理#ifndef和#endif之間的語句:

#ifndef COORDIN_H_
#define COORDIN_H_
...//something you want to do
#endif

5.strcpy
函式原型為:

 char *strcpy(char *dest,const char *src)

標頭檔案:

 #include<string.h>/#include <cstring>

功能是: 從src地址開始且含有null結束符的字串複製到以dest地址開始的字串中,並返回指向dest的指標。通俗的講就是將 src字元陣列複製到dest陣列中,如果dest陣列本身有資料,會把src裡的資料全部複製到dest中,如果dest中有資料小於src地址長度的將會被覆蓋,而大於src長度的將保留
說明:dest的地址長度要足夠大,不然會產生溢位。Dest的記憶體長度要大於等於src的記憶體長度。

6.size_t

typedef long unsigned int  size_t

size_t的型別也就是long unsigned int型別。之前在應用的時候並沒有很注意這些的使用,但是在實際應用時,為了實際的效率和提高記憶體應用,才特別注意使用這些,所以還是要了解這幾種型別的具體的位的長度。

未完待續。。。