程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++對C的增強,增強

C++對C的增強,增強

編輯:C++入門知識

C++對C的增強,增強


C++對C的增強:

學習工具:wxDev-C++(在VC++6.0中是不一樣的)

(1)const用法的變化

在C語言程序中,const的用法可以是:

1 int main()
2 {
3   const int a = 5;
4   int *p = (int *)&a;
5  (*p) = 10;    
6   return 0;        
7 }

在這裡,a的值為5;(分配空間內存)

 

在C++中,const的用法是確實是常量的,它一般通過以下方法來完成:

1、當碰見常量聲明時在符號表中放入常量;

2、編譯過程若使用常量則直接以符號表中的值替換;

3、編譯過程中,若發現使用extern或&操作符,則給對應常量分配空間;(在這種情況下,C++才為變量分配內存)

注意:C++編譯器雖然可能為常量分配空間但是不使用常量

同樣上面的代碼在c++中,a的值為0;

 

可以說c語言中const是一個只讀變量,而在c++中const是一個常量;

 

const的引用:

const的引用可以用常量來進行初始化:

const int &a = 1;    //不會報錯

const引用讓變量擁有只讀屬性;

1  int main()
2 {
3   const int &a = 1;
4   int *p = (int *)&a;
5  (*p) = 5;
6  return 0;  
7 }

這時a的值會改變變為5;

 

我們知道引用是有其存儲空間的,Type + &a = Type * const a;相當於一個常指針的作用;

 

C++編譯器在編譯過程中使用常指針作為引用的內部實現,因此引用所占用的空間是存在的,可以認為是這個指針的空間(網上是存在爭議的)

但我認為C++的引用只是為了實用性做出的細節隱藏;

 

(2)變量的定義的變化

在c語言中

 1 main()
 2 {
 3     int a = 0, b = 0;
 4     int i = 10;
 5     for(a=0; a<i; a++)
 6     {
 7         for(b=0; b<i;  b++)
 8         {
 9               //執行內容  
10         }
11     }
12 }
13 //其中a和b不能在循環體中定義    

在C++中

main()
{
    for(int a=0; a<10; a++)
    {
        //執行內容
    }
}
//以上代碼在C++中是可以運行通過的,但是在c語言中是不行的    

 

(3)register關鍵字的變化

在C語言中,register關鍵字無法取得其變量地址;而在C++中則可以做優化,取得register的關鍵字;

 

(4)函數參數的變化

 

在c語言中,f()可接受任何參數;

在C++中,f()和f(void)是一樣的;

 

(5)struct類型的增強

在C語言中,struct類型不屬於新的類型;

而在c++中,struct類型定義的類型屬於一種新的類型;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved