C++在C說話基本之上加強的幾個適用特征總結。本站提示廣大學習愛好者:(C++在C說話基本之上加強的幾個適用特征總結)文章只能為提供參考,不一定能成為您想要的結果。以下是C++在C說話基本之上加強的幾個適用特征總結正文
變量的界說
C說話中的變量都必需在感化域開端的地位界說!! C++中更強調說話的“適用性”,一切的變量都可以在須要應用時再界說。
#include <iostream>
using namespace std;
int main11()
{
int i = 0;
printf("ddd");
int k; // 這段代碼在vc6,C說話編譯情形下就會報錯。就是由於這裡的界說
system("pause");
return 0;
}
register症結字 要求編譯器讓變量a直接放在存放器外面,速度快
在c說話中 register潤飾的變量 不克不及取地址,然則在c++外面做了內容:
1.register症結字的變更
register症結字要求“編譯器”將部分變量存儲於存放器中,C說話中沒法獲得register變量地址,在C++中仍然register症結字,C++編譯器有本身的優化方法,不應用register也能夠做優化,C++中可以獲得register變量的地址。
2.C++編譯器發明法式中須要取register變量的地址時,register對變量的聲明變得有效。
3.晚期C說話編譯器不會對代碼停止優化,是以register變量是一個很好的彌補。
demo
#include <iostream>
int main()
{
register int a = 0;
printf("&a = %x\n", &a); // c說話這裡會報錯
for (int i = 1; i < 1000; i++) { // 而關於這類頻仍應用i的情形主動停止優化,將i放入存放器中
printf("%d\n", i);
}
system("pause");
return 0;
}
對C說話的變量檢測加強
在C說話中,反復界說多個同名的全局變量是正當的;在C++中,不許可界說多個同名的全局變量。
C說話中多個同名的全局變量終究會被鏈接到全局數據區的統一個地址空間上。
demo
#include <stdio.h>
int g_var;
int g_var = 1;
// C說話可以編譯經由過程
// C++直接謝絕這類二義性
int main(int argc, char *argv[])
{
printf("g_var = %d\n", g_var);
return 0;
}
struct類型加強
C說話的struct界說了一組變量的聚集,C編譯器其實不以為這是一種新的類型。
C++中的struct是一個新類型的界說聲明。
demo
struct Student
{
char name[100];
int age;
};
int main(int argc, char *argv[])
{
// C說話中須要在界說構造體的時刻加struct,而C++不須要
Student s1 = { "wang", 1 };
Student s2 = { "wang2", 2 };
return 0;
}
C++中一切的變量和函數都必需有類型
C說話中的默許類型在C++中是不正當的,好比說函數f的前往值是甚麼類型,參數又是甚麼類型? 函數g可以接收若干個參數?
改換成.cpp就會報錯
f(i)
{
printf("i = %d\n", i);
}
g()
{
return 5;
}
int main(int argc, char *argv[])
{
f(10);
printf("g() = %d\n", g(1, 2, 3, 4, 5));
getchar();
return 0;
}
三目運算符的加強
在C說話中表達式的成果放在存放器中,在C說話中,表達式的前往值是變量的值,在C++中,表達式前往的是變量的自己。
int main(){int a = 10;int b = 20;// 前往一個最小數,而且給最小數賦值成3
三目運算符是一個表達式,表達式弗成能做左值,所以這個在C說話中沒法編譯經由過程
(a < b ? a : b) = 30;
而在C++中便可以編譯運轉。C說話中也能夠完成雷同的功效:
(a < b ? &a : &b) = 30;return 0;}
C++中const增強
C說話中的const是一個冒牌貨。
int main()
{
// 似乎a是一個常量
const int a = 10;
int *p = NULL;
p = (int *)&a;
*p = 20; // 直接賦值
printf("a:%d\n", a);
// C說話中顯示a被修正了
// C++則顯示a照樣10,沒有轉變
return 0;
}
C++中的const是一個真實的常量。
說明:
C++編譯器對const常量的處置。
當碰見常量聲明時,在符號表中放入常量。
編譯進程中若發明應用常量則直接以符號表中的值調換。
編譯進程中若發明對const應用了extern或許&操作符,則給對應的常量分派存儲空間(兼容C)。