char p與char p N 的一點思考

2021-06-22 03:08:32 字數 1983 閱讀 7370

今天用c++寫了乙個非常簡單的程式 

結果  

很失敗  

因為自己程式設計比較少 所以有時候還會 c與c++混用  

今天寫了這個

#include using namespace std;

int main()

// 以這種方式呼叫函式func(「abc」);

try catch (char* p)

這些都是c++編譯器預設了可以把const char* 轉成 char*的罪行,無疑會對大家是乙個誤導。甚至讓人無所畏懼地走入其中,並自以為走入了正途。這樣看來,這種向下相容的c++標準,就顯得有點誤人不淺了

不過好在,c++標準委員會早已意識到了這一點。這個c++的feature被定義為了「deprecatedfeature」,即「不被建議使用的特性」。意思就是,在將來,這種特性將被從c++中移出,於是,你目前的這種程式將無法在新的c++編譯器上編譯通過。對於程式的可移植性來說,我們今天所寫的**尤其要注意這些「deprecatedfeature」。

據我所知,目前c++中被列為「deprecatedfeature」如下所示(可能不準確,請大家指正)下面的這些feature都已被c++標準委員會訂為廢除featrue了。

一、隱晦的字串的const轉換。

char *p = "test";

w_char *pw = l"test";

把乙個const的字串型別轉成non-const的。包括指標和陣列。

二、隱晦的型別宣告。

func() {} //函式的隱晦返回型別是int static num; //變數的隱晦型別是int

這種feature在c89中還可以使用,但在c99和c++中都被去除了。(gcc3.4版本對於這種宣告會給出編譯錯誤,而vc++6.0會認為這是合法的程式)

三、布林變數的累加操作。bool isconn = false; isconn++;//這個操作會把isconn變為true

就目前而言,幾乎所有的編譯器都認可這種操作,但這種用法也是不被建議的,終有一天會被取消。四、更改父類成員的訪問許可權。

class b

;class d : public b

;對於這種語法,子類重新暴露了父類的私有成員。這會帶來很大的安全性問題。目前而言,這個feature對於所有的編譯器來說應該都是可以編譯通過的(連個warning都沒有)。但這個feature也是要被廢除的。

五、檔案中域的static宣告

static int i;

static void func()

據說,這種舊的在c中的為了實現其作用域在本檔案中的feature在未來的c++中也要被取消。

文章到這裡應該結束了,在結束之前,讓我再給大家共享乙個有趣的關於const的例子(在網上看到的)

const int a = 1;

int *p =const_cast(&a);

*p = 2;

cout << 「valuea=」<< a<< endl;

cout << 「value *p=」<<*p <

這段**輸出的結果如下:

value a=1

value *p=2

address a=0xbff1d48c

address p=0xbff1d48c

位址都是一樣的,可值為什麼不一樣呢?呵呵。這個問題看起來有點「學術味」過濃,不過是個好例子,可以讓你知道c++的一些用法和一些原理。有以下幾個方面大家可以考慮一下:1)const int a = 1是不是和巨集有點像,會不會被編譯器優化了?2)去修改乙個const的值,本來應該是不對的。這可能會是向舊的c相容。是否會讓編譯器產生未知行為?

所以,這個示例也告訴我們,我們應該遵循c++中的const和non-const的語義,任何想要破壞這個語義的事情都會給我們帶來未知的結果。

一點一點進步

requestparam,是獲取前端傳遞給後端的引數,可以使get方式,也可以是post方式。若前端傳遞的引數和後端接收的引數名稱不一致,則必須要標註。pathvariable,是獲取get方式,url後面引數,進行引數繫結。1.裝箱就是講基本資料型別轉換為包裝類,拆箱就是自動將包裝類轉換為基本資料...

他們寫的,一點思考,一點敬意

技術的正宗與野路子 我們的大腦好比記憶體。既然是記憶體,就裝不下所有的知識。但應該能裝下對於知識的索引,否則我們便沒法工作了。啊,我的程式為啥卡住啦 本文簡答介紹在linux環境下如何利用gdb來分析卡住的程式,本文使用的python為cpython2.7。2019,能否解開時間的困局?通常在年初的...

this的一點見解

執行環境 execution context,有時也成為上下文,有時也稱為 環境 執行環境定義了變數和函式有權訪問那些資料,決定各自的行為。全域性執行環境是最外圍的執行環境。全域性執行環境一直都存在。宿主環境不同執行環境也不同。每乙個環境都有乙個執行環境。當執行流進入乙個函式時,函式的環境就會被推入...