成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C++基礎(chǔ)知識點有哪些

這篇文章給大家分享的是有關(guān)C++基礎(chǔ)知識點有哪些的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)專注于寧安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供寧安營銷型網(wǎng)站建設(shè),寧安網(wǎng)站制作、寧安網(wǎng)頁設(shè)計、寧安網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造寧安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供寧安網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

一、new和malloc的區(qū)別

1、new和delete配對,釋放數(shù)組需要用delete[]。new和delete實際上調(diào)用了malloc和free,另外調(diào)用了類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。
2、malloc和free配對,malloc返回的是void指針,需要強(qiáng)轉(zhuǎn)。

3、new申請的內(nèi)存保存在堆中,malloc申請的內(nèi)存保存在自由存儲區(qū)。

二、C++運算符

1、取模操作符:%
2、邏輯否、與、或:!, &&, ||
3、三元操作符:
  c = (a>b) ? a : b;
4、按位與、或、非
  & AND 邏輯與 Logic AND
  | OR 邏輯或Logic OR
  ~ NOT 對1取補(bǔ)(位反轉(zhuǎn))Complement to one (bit inversion)
5、按位移:
  << SHL 左移Shift Left
  >> SHR 右移Shift Right

三、&: 取地址運算符、定義變量引用

&操作符用于取地址時的用法是:int* x=&y;。

然而,另外一種用法是定義變量別名,這種用法不能和取地址簡單等同。用于傳遞函數(shù)輸入?yún)?shù)時很好理解,但定義變量時容易引起理解錯誤,特別是和指針的區(qū)別:

從內(nèi)存的角度看,指針和引用是完全不同的。指針,內(nèi)存要為它分配一個存儲空間。引用,內(nèi)存不分配空間的,引用只是一個別名。我認(rèn)為就是在符號表里增加一個標(biāo)志而已,對于語句int &y=x; (&x=&y)為true。

實際上“引用”可以做的任何事情“指針”也都能夠做,為什么還要“引用”這東西?答案是“用適當(dāng)?shù)墓ぞ咦銮∪缙浞值墓ぷ鳌薄.?dāng)重載某個操作符時,你應(yīng)該使用引用。最普通的例子是操作符[]。這個操作符典型的用法是返回一個目標(biāo)對象,其能被賦值。如果操作符[]返回一個指針,那么后一個語句就得這樣寫:

 *v[5] = 10;

但是這樣會使得v看上去象是一個向量指針。因此你會選擇讓操作符返回一個引用。

引用的一些規(guī)則如下: 

(1)引用被創(chuàng)建的同時必須被初始化(指針則可以在任何時候被初始化),否則會報編譯錯誤。 
(2)一旦引用被初始化,就不能改變引用的關(guān)系(指針則可以隨時改變所指的對象)。 
    以下示例程序中,k被初始化為i的引用。語句k = j并不能將k 修改成為j 的引用,只是把k的值改變成為6。由于k是i的引用,所以i 的值也變成了6。  

  int i = 5; 
  int j = 6; 
  int &k = i; 
  k = j; // k 和i 的值都變成了6;

(3)不能有NULL 引用,引用必須與合法的存儲單元關(guān)聯(lián)(指針則可以是NULL)。 
    以下的寫法將地址指向一個位置的內(nèi)存,是錯誤的。結(jié)果將是不確定的(編譯器能產(chǎn)生一些輸出,導(dǎo)致任何事情都有可能發(fā)生)

  char *pc = 0; // 設(shè)置指針為空值 
  char& rc = *pc; // 讓引用指向空值

(4)“sizeof 引用”得到的是所指向的變量(對象)的大小,但是當(dāng)引用作為成員時,其占用空間與指針相同(沒找到標(biāo)準(zhǔn)的規(guī)定)。

(5)引用只能指向一個實際的變量,不能指向指針或引用
   (int*) * p1; // p1是指針的指針
   (int*) & p2; // p2是指向整型指針的引用
   引用不能指向指針或引用!
   (int&) * p3; // ERROR: 不能有指向引用的指針,因為引用只是一個別名
   (int&) & p4; // ERROR: 不能有指向引用的引用,因為引用只是一個別名
(6)指針和引用在內(nèi)部的實現(xiàn)其實是沒多大的區(qū)別的。但使用時有些地方是要注意的。因為引用具有對象行為,這一點很重要。引用復(fù)制時會調(diào)用對象的復(fù)制函數(shù),在涉及多態(tài)時,這地方很容易出錯。

  class A{...};
  class B:public A{...};
  void f(A&a1,A&a2)
  {
   a1=a2;//此處調(diào)用的只有基類A的復(fù)制函數(shù),而B部分不會被進(jìn)行復(fù)制,之將導(dǎo)致數(shù)據(jù)的不一致(即B部分的數(shù)據(jù)沒有被復(fù)制);
   a1.fun();
  }

四、關(guān)于const

一般的const變量:

下面兩個聲明都指向一個const int類型的指針,指針?biāo)赶虻膬?nèi)存不能被修改,但指針可以指向另一個內(nèi)存:
  const int *p; 
  int const *q; 
int類型的const指針應(yīng)該這樣聲明。指針?biāo)赶虻膬?nèi)存可以被修改,但指針不能指向另一個內(nèi)存
  int * const r= &n;

聲明一個指向const int類型的const指針:
  const int * const p=&n;

const在函數(shù)聲明中的含義:

const int& SetPoint(const int& param) const
第一個const:
函數(shù)的返回值限定為const,即返回值不能被修改。const int a=SetPoint(...)  a在此之后便不能被修改。
第二個const:
指函數(shù)的形參為const類型,函數(shù)體內(nèi)不能被修改.
第三個const:
表明這個函數(shù)不會對這個類對象的數(shù)據(jù)成員(準(zhǔn)確地說是非靜態(tài)數(shù)據(jù)成員)作任何改變。

類的const和static成員變量的初始化:

對于static成員變量,如果同時是const的,可以在類定義中初始化,否則只能在類定義外部初始化。
非static的const成員變量只能在構(gòu)造函數(shù)的初始化列表中初始化。(ClassName():m_1(1){};)

五、一些數(shù)據(jù)類型和變量賦值語法

1、union 中的所有被聲明的元素占據(jù)同一段內(nèi)存空間,其大小取聲明中最長的元素的大小。union 的用途之一是將一種較長的基本類型與由其它比較小的數(shù)據(jù)類型組成的結(jié)構(gòu)(structure)或數(shù)組(array)聯(lián)合使用。
2、long double和float變量的賦值方法:
  3.14159L // long double
  6.02e23f // float
3、容易引起理解錯誤的定義語句:int*  p,q; 
   第一眼看去,好像是p和q都是int*類型的,但事實上,只有p是一個指針,而q是一個最簡單的int型變量。同時定義兩個指針的語法是:int *p1, *p2;

4、定義一個指向int[4]數(shù)組的指針變量
   int (*p)[4]=RollNum;
   這里,p被聲明為一個指向一個4元素(int類型)數(shù)組的指針。
5、未指定size情況下,char數(shù)組的大小由初始化字符串決定:
   我們可以用下面兩種方法的任何一種來初始化字符串mystring:
   char mystring [ ] = { 'H', 'e', 'l', 'l', 'o', '/0' };
   char mystring [ ] = "Hello";
  在兩種情況下字符串或數(shù)組mystring都被定義為6個字符長(元素類型為字符char):組成Hello的5個字符加上最后的空字符('/0')。在第二種用雙引號的情況下,空字符('/0')是被自動加上的。兩種情況下sizeof應(yīng)該都是6,strlen都是5。

六、常用的幾個標(biāo)準(zhǔn)C++函數(shù)

1、cout和cin的用法:
  cout << "xxx" << endl;
  cin >> "yyy";

2、常用的字符串函數(shù):
  strcat //字符串拼接
  strcpy
  strncpy
  strcmp //字符串比較,相同返回0

七、switch-case的寫法

 switch (expression) 
 {
  case constant1:
   block of instructions 1
   break;
  case constant2:
   block of instructions 2
   break;
  .
  .
  .
  default:
   default block of instructions
 }

八、函數(shù)的幾個屬性和用法

1、指定函數(shù)的默認(rèn)參數(shù)值
int divide (int a, int b=2) {

2、什么是函數(shù)重載(Overloaded functions)
兩個不同的函數(shù)可以用同樣的名字,只要它們的參量(arguments)的原型(prototype)不同,也就是說你可以把同一個名字給多個函數(shù),如果它們用不同數(shù)量的參數(shù),或不同類型的參數(shù)。

3、內(nèi)聯(lián)函數(shù)

inline 指令可以被放在函數(shù)聲明之前,要求該函數(shù)必須在被調(diào)用的地方以代碼形式被編譯。這相當(dāng)于一個宏定義(macro)。它的好處只對短小的函數(shù)有效,這種情況下因為避免了調(diào)用函數(shù)的一些常規(guī)操作的時間(overhead),如參數(shù)堆棧操作的時間,所以編譯結(jié)果的運行代碼會更快一些。
調(diào)用函數(shù)的時候并不需要寫關(guān)鍵字inline ,只有在函數(shù)聲明前需要寫。

4、將數(shù)組作為參數(shù)傳入函數(shù),傳的是引用而不是值。
  void procedure (int myarray[ ][3][4])

九、函數(shù)指針的用法

使用函數(shù)指針的幾種方法:
(1)簡單調(diào)用函數(shù)指針;

 void (*pfunc)(int);
 pfunc=callback_funcname;
 callback_funcname(1);

 其中聲明函數(shù)指針原型的代碼可以在調(diào)用處寫,也可以寫成全局的。這種方法使用簡單,適用于臨時調(diào)用。
(2)使用typedef調(diào)用函數(shù)指針:

 typedef void(*PFUNC)(int);
 PFUNC pfunc;
 pfunc=callback_funcname;
 callback_funcname(1);

 這種方法適用于多次調(diào)用,先全局定義PFUNC,再在每個調(diào)用的地方聲明臨時變量后調(diào)用。
(3)C++類中調(diào)用成員函數(shù)指針(不使用typedef):

 void (*MyClass::pfunc)(int);
 pfunc=&MyClass::callback_funcname;
 (this->*callback_funcname)(1);

 和方法1類似,注意語法的不同。
(4)C++類中調(diào)用成員函數(shù)指針(使用用typedef):

 typedef void(*PFUNC)(int); //在類中typedef
 PUNC pfunc;
 pfunc=&MyClass::callback_funcname;
 (this->*callback_funcname)(1);

 和方法2類似,注意語法的不同。

十、typedef的不常用用法

typedef的一般用法是:

  typedef int UINT32;

但用來定義一個數(shù)組類型或指針函數(shù)時,比較特殊:

  typedef char CARRAY[32]; //定義了一個CARRAY的類型,代表char[32]

  typedef void(*PFUN)(int); //定義了一個指向指針函數(shù)的變量類型,函數(shù)原型為void xxx(int yyy);

十一、類的private/protected/public屬性

1、類的成員如果沒有指定訪問域,默認(rèn)是private的。

2、標(biāo)識符protected 與 private類似,它們的唯一區(qū)別在繼承時才表現(xiàn)出來。當(dāng)定義一個子類的時候,基類的protected 成員可以被子類的其它成員所使用,然而private 成員就不可以。

3、public/protected/private繼承的區(qū)別:
(1)public繼承:父類的public依然是public,protected依然是protected,private不可訪問;
(2)protected繼承:父類的public稱為protected,protected稱為private;
(3)private繼承:父類的所有成員全部變成private。

十二、關(guān)于空類

編譯器為一個空類提供哪些默認(rèn)函數(shù)?

1、C++編譯器會提供默認(rèn)的構(gòu)造函數(shù),析構(gòu)函數(shù), 拷貝構(gòu)造函數(shù)和拷貝賦值操作符(請參考著名的Effective C++的第三版的第5條)
當(dāng)我們定義一個class而沒有明確定義構(gòu)造函數(shù)的時候,編譯器會自動假設(shè)兩個重載的構(gòu)造函數(shù) (默認(rèn)構(gòu)造函數(shù)"default constructor" 和復(fù)制構(gòu)造函數(shù)"copy constructor")??截悩?gòu)造函數(shù)是一個只有一個參數(shù)的構(gòu)造函數(shù)(原型:ClassName(ClassName &cn){};),該參數(shù)是這個class的一個對象,這個函數(shù)的功能是將被傳入的對象(object)的所有非靜態(tài)(non-static)成員變量的值都復(fù)制給自身這個object。
必須注意:這兩個默認(rèn)構(gòu)造函數(shù)(empty construction 和 copy constructor )只有在沒有其它構(gòu)造函數(shù)被明確定義的情況下才存在。
一個類包含一個對賦值操作符assignation operator (=)的默認(rèn)定義,該操作符用于兩個同類對象之間。這個操作符將其參數(shù)對象(符號右邊的對象) 的所有非靜態(tài) (non-static) 數(shù)據(jù)成員復(fù)制給其左邊的對象。
2、用class obj;的方式聲明一個對象,如果構(gòu)造函數(shù)沒有參數(shù),或只有默認(rèn)構(gòu)造函數(shù),后面不能加(),因為編譯器會誤以為這是一個沒有參數(shù)的函數(shù)聲明;
3、如果任何其它有任意參數(shù)的構(gòu)造函數(shù)被定義了,默認(rèn)構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)就都不存在了。在這種情況下,如果你想要有empty construction和copy constructor ,就必需要自己定義它們。
4、對基本類型,在c++里面,為了模板template,規(guī)定他們可以使用類似于類的默認(rèn)構(gòu)造函數(shù)的方式(僅僅是類似的方式而已) 賦初始值0。這叫做基本類型的顯示初始化, 請參考 C++標(biāo)準(zhǔn)程序庫(The C++ Standard Library)的14頁,2.2.2 基本型別的顯示初始化,書中舉的例子就是
int i1;//未初始化
int i2 = int(); //初始化為0

sizeof一個空類等于多少?

sizeof一個空類返回1。所謂類的實例化就是在內(nèi)存中分配一塊地址,每個實例在內(nèi)存中都有獨一無二的地址。同樣空類也會被實例化,所以編譯器會給空類隱含的添加一個字節(jié),這樣空類實例化之后就有了獨一無二的地址了。所以空類的sizeof為1。C++編譯器不允許對象為零長度。試想一個長度為0的對象在內(nèi)存中怎么存放?怎么獲取它的地址?為了避免這種情況,C++強(qiáng)制給這種類插入一個缺省成員,長度為1。如果有自定義的變量,變量將取代這個缺省成員。

十三、繼承或多重繼承情況下構(gòu)造函數(shù)的調(diào)用順序

(1)如果聲明為Derive: public Super1, public Super2{AnotherClass m_obj;}; 構(gòu)造函數(shù)的調(diào)用順序是:Super1, Super2, AnotherClass, Derive.
(2)如果父類有默認(rèn)構(gòu)造函數(shù),或沒有參數(shù)的構(gòu)造函數(shù),不需要在子類的構(gòu)造函數(shù)定義中顯式調(diào)用父類構(gòu)造函數(shù),否則需要調(diào)用。成員對象也是一樣道理。以上面的例子說明,Derive的構(gòu)造函數(shù)寫法是:
Derive(int i): Super1(i), Super2(i), m_obj(1){...}
注意,成員對象初始化時應(yīng)該指明對象名稱,而不是類名。

析構(gòu)函數(shù)的調(diào)用順序應(yīng)該是依次反過來的。

十四、虛函數(shù)、純虛函數(shù)和抽象類、虛析構(gòu)函數(shù)

虛函數(shù)的作用和運行原理

(1)多態(tài)是面向?qū)ο缶幊讨械暮诵母拍睿褪钦f一個基類類型的指針實際上可能指向的是一個子類對象。只有在運行時才能根據(jù)實際情況來決定執(zhí)行哪個函數(shù),也就是動態(tài)聯(lián)編。和動態(tài)聯(lián)編對應(yīng)的是靜態(tài)聯(lián)編,也就是說在編譯時就決定了調(diào)用哪個函數(shù)。為了實現(xiàn)動態(tài)聯(lián)編,必須將父類的函數(shù)聲明為virtual。如果沒有聲明為virtual,可能得到的結(jié)果不是預(yù)期中的。
對于析構(gòu)函數(shù)而言,虛函數(shù)保證子類和父類的析構(gòu)函數(shù)都會被執(zhí)行。

(2)對于包含了至少一個虛函數(shù)的類(或其父類包含虛函數(shù)),編譯器需要為這個類增加4個字節(jié),用來保存指向虛函數(shù)表VTABLE的指針。

純虛函數(shù)和抽象類

包含了純虛函數(shù)的類不能被直接實例化,可以稱為抽象類。定義方法:
virtual void func()=0;
子類override一個虛函數(shù),不一定要加virtual關(guān)鍵字。

什么情況下需要指定析構(gòu)函數(shù)為virtual?

(1)析構(gòu)函數(shù)不一定需要定義為虛函數(shù),只有當(dāng)這個類要作為其他類的父類使用時,才需要定義為虛函數(shù)。如果父類的析構(gòu)函數(shù)沒有定義為虛函數(shù),則子類對象銷毀時,父類析構(gòu)函數(shù)不會被調(diào)用。
(2)對于一個抽象類,析構(gòu)函數(shù)可以被定義為純虛的。
(3)父類和子類之間的虛函數(shù)動態(tài)聯(lián)編不會因為private發(fā)生影響。
(4)一個類的虛函數(shù)在它自己的構(gòu)造函數(shù)和析構(gòu)函數(shù)中被調(diào)用的時候,它們就變成普通函數(shù)了,不“虛”了。也就是說不能在構(gòu)造函數(shù)和析構(gòu)函數(shù)中讓自己“多態(tài)”。
(5)在虛函數(shù)和純虛函數(shù)的定義中不能有static標(biāo)識符,原因很簡單,被static修飾的函數(shù)在編譯時候要求前期bind,然而虛函數(shù)卻是動態(tài)綁定(run-time bind),而且被兩者修飾的函數(shù)生命周期(life recycle)也不一樣。

十五、多重繼承情況下如何引用父類的同名成員?

重繼承情況下,如果多個基類有同名成員,引用方法是:

 pDeriveObj->BaseClass1::Member;

十六、運算符重載

語法:

Type Type::operator +(const Type &i){}

十七、友元

友元可以實現(xiàn)外部對private和protected成員的訪問。有兩種實現(xiàn):
(1)友元函數(shù)。語法:在函數(shù)聲明前加上friend。友元函數(shù)并不是類的成員函數(shù),實現(xiàn)函數(shù)體或調(diào)用函數(shù)時不加ClassName::。
(2)友元類。在類的聲明中加入:friend class VisitorClass;
友元不會被子類繼承。

十八、模板

函數(shù)模板

實現(xiàn)語法:

在函數(shù)的聲明和實現(xiàn)前加上template<typename T> ,(typename和class等價),可以寫在一行里面,也可以分成兩行寫,注意>后面沒有分號。如果聲明和實現(xiàn)分開寫,兩個地方都要寫上template<typename T>。

(1)一行代碼中同時聲明并實現(xiàn)函數(shù)
template <typename T>void func(T t1, T t2)

{...};
(2)分兩行代碼聲明并實現(xiàn)函數(shù)
template <class T>
void func(T t1, T t2)
{...};
(3)在兩個地方分別聲明和實現(xiàn)函數(shù)
template <class T>
void func(T t1, T t2);
...
template <class T>
void func(T t1, T t2)
{...}

引用語法:

func<int>(5, 6);

類模板

聲明方法:

類模板可以實現(xiàn)在一個類中有一個通用類型的成員變量。

template <class T> class ClassName

{public:

    T *m_pVariable;

};

引用方法:

ClassName<int> obj;

模板特殊化

模板特殊化可以專門為某種數(shù)據(jù)類型定義特殊的行為。類的定義必須和通用的模板類完全一致,除了用專門語法,并將T修改為專門的類型,并定義特殊行為。
template<> class<int>{定義通用函數(shù),定義特殊函數(shù)};

定義模板的默認(rèn)值
template <class T = char> // 有一個默認(rèn)值。

模板的參數(shù)值

除了模板參數(shù)前面跟關(guān)鍵字class 或 typename 表示一個通用類型外,函數(shù)模板和類模板還可以包含其它不是代表一個類型的參數(shù),例如代表一個常數(shù),這些通常是基本數(shù)據(jù)類型的。

二十、類型轉(zhuǎn)換和C++高級類型轉(zhuǎn)換

基本類型強(qiáng)轉(zhuǎn)有兩種寫法:

 int i;
 float f = 3.14;
 i = (int) f;
 i = int ( f );

高級類型轉(zhuǎn)換

ANSI-C++ 標(biāo)準(zhǔn)定義了4種新的類型轉(zhuǎn)換操作符: reinterpret_cast, static_cast, dynamic_cast 和const_cast。

reinterpret_cast可以將一個指針轉(zhuǎn)換為任意其它類型的指針。
ClassA* pa;
ClassB* pb=reinterpret_cast<ClassB*>pa;

static_cast可以執(zhí)行所有能夠隱含執(zhí)行的類型轉(zhuǎn)換,以及它們的反向操作(即使這種方向操作是不允許隱含執(zhí)行的)。用于類的指針,也就是說,它允許將一個引申類的指針轉(zhuǎn)換為其基類類型(這是可以被隱含執(zhí)行的有效轉(zhuǎn)換),同時也允許進(jìn)行相反的轉(zhuǎn)換:將一個基類轉(zhuǎn)換為一個引申類類型。不會檢查被轉(zhuǎn)換的基類是否真正完全是目標(biāo)類型的。
Derive* pa;
Super* pb;
pa = static_cast<Derive*> pb;
pb = static_cast<Super*> pa;
static_cast除了能夠?qū)︻愔羔樳M(jìn)行操作,還可以被用來進(jìn)行類中明確定義的轉(zhuǎn)換,以及對基本類型的標(biāo)準(zhǔn)轉(zhuǎn)換:
double d=3.14159265;
int i = static_cast<int>(d);

dynamic_cast 完全被用來進(jìn)行指針的操作。它可以用來進(jìn)行任何可以隱含進(jìn)行的轉(zhuǎn)換操作以及它們被用于多態(tài)類情況下的方向操作。然而與static_cast不同的是, dynamic_cast 會檢查后一種情況的操作是否合法,也就是說它會檢查類型轉(zhuǎn)換操作是否會返回一個被要求類型的有效的完整的對象。
在不合法的情況下,如果用于指針,將返回NULL;如果用于引用,拋出異常。
Derive* pa = new Derive();
Super* pb = new Super();
pa = dynamic_cast<Derive*> pb; //失敗,返回NULL
pb = dynamic_cast<Super*> pa;  //成功

const_cast類型轉(zhuǎn)換對常量const 進(jìn)行設(shè)置或取消操作。
class C {};
const C * a = new C;
C * b = const_cast<C*> (a);

typeid (object_pointer)
這個操作符返回一個類型為type_info的常量對象指針,這種類型定義在標(biāo)準(zhǔn)頭函數(shù)中。type_info::name()返回對象的類名。

二十一、命名空間

定義一個命名空間:

namespace ns1{...}

設(shè)置默認(rèn)命名空間:

using namespace ns1;

引用其他命名空間的類型:

ns2::variable = xx;

二十二、預(yù)處理命令

#undef 完成與 #define相反的工作,它取消對傳入的參數(shù)的宏定義

#ifdef, #ifndef, #if, #endif, #else and #elif

指令#line 可以使我們對這兩點進(jìn)行控制,也就是說當(dāng)出錯時顯示文件中的行數(shù)以及我們希望顯示的文件名。它的格式是:
#line number "filename"
下面這段代碼將會產(chǎn)生一個錯誤,顯示為在文件"assigning variable", line 1 。
#line 1 "assigning variable"
int a?;

這個指令將中斷編譯過程并返回一個參數(shù)中定義的出錯信息
#error

這個指令是用來對編譯器進(jìn)行配置的,針對你所使用的平臺和編譯器而有所不同。
#pragma

二十三、預(yù)定義宏

__LINE__ 整數(shù)值,表示當(dāng)前正在編譯的行在源文件中的行數(shù)。
__FILE__ 字符串,表示被編譯的源文件的文件名。
__DATE__ 一個格式為 "Mmm dd yyyy" 的字符串,存儲編譯開始的日期。
__TIME__ 一個格式為 "hh:mm:ss" 的字符串,存儲編譯開始的時間。
__cplusplus 整數(shù)值,所有C++編譯器都定義了這個常量為某個值。如果這個編譯器是完全遵守C++標(biāo)準(zhǔn)的,它的值應(yīng)該等于或大于199711L,具體值取決于它遵守的是哪個版本的標(biāo)準(zhǔn)。

感謝各位的閱讀!關(guān)于“C++基礎(chǔ)知識點有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

當(dāng)前題目:C++基礎(chǔ)知識點有哪些
文章鏈接:http://jinyejixie.com/article32/gpgisc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、營銷型網(wǎng)站建設(shè)微信公眾號、ChatGPT網(wǎng)站制作、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
霞浦县| 綦江县| 朝阳市| 化德县| 台安县| 叶城县| 耒阳市| 故城县| 六盘水市| 武夷山市| 沙坪坝区| 安国市| 华安县| 当雄县| 宁波市| 临泉县| 镇平县| 邛崃市| 三门峡市| 淳化县| 陆丰市| 柳州市| 桐城市| 南昌市| 南昌市| 灯塔市| 合阳县| 宜阳县| 公主岭市| 武邑县| 古浪县| 通山县| 鄂托克前旗| 财经| 西华县| 新绛县| 石首市| 平凉市| 台中市| 阿城市| 阿拉善右旗|