c++中提倡用const 來代替 #define. 好處
1 :const 進行型別安全檢查
好處2:
const 是有型別的,比如
const int val = 0;
const double val = 0;
但是const功能不僅僅於此。而且不同地方出現的const,意義不盡相同,也有一定區別。
這裡僅討論 用作代替#define的const的用法和性質首先 在***.h檔案中原來的
#define max 100 ----> const int max 100;
說明:
1 首先const預設是內部變數,只在本cpp檔案中有效,不然乙個***.h被多個cpp
檔案引用後,肯定會重定義。由於const 是內部變數,所以在多個cpp檔案中出現相同的定義完全沒有問題。
2 由於const表示的是常量,也就是值不會被改變,所以編譯器就有可能對其做一些優化。 比如很簡單,做常量摺疊,不給其分配位址空間。
例如 在***.h中定義的
const int max = 100;
這個常量max 就很有可能不佔記憶體空間。
為什麼是很有可能?因為如果有以下3中情況,則需要給const分配空間。
1 const 常量被宣告為 extern
2 對const 常量取位址運算
3 const 值未定
第一種 由於const被宣告為extern 因此其他檔案中的函式可能要使用到該常量,所以要給它分配空間。
第二種,取位址了嚒,沒空間 **來的位址?
第三種,比如:
const int max = i; //i為前面某處定義的變數
此時也要給max分配空間
可以理解,如果 乙個const 常量,即沒有被取位址,又是本檔案內有效,並且值從一開始就是確定的,而且它又是常量,不會被改變,也就沒有必要給它分配空間了。於是便和#define變得差不多一摸一樣了,除了它是有型別的。
php中常量的定義 define和const
在類的外邊第一常量 使用關鍵字define來定義常量。在類外面通常這樣定義常量 define php phpddt.com 在類中,不能使用define,而是使用const來定義常量。class myclass echo myclass constant 一般是define在類外定義常量,const...
union 代替or的情況
技巧2 union 代替or的情況 當sql語句中,or 條件上面有乙個為子查詢,並且子查詢上的表與源表不同,這個時候就可以用union代替or或者你發現執行計畫中的 filter 有 or 並且 or 後面跟上子查詢 exists.的時候就要注意,比如 2 filter t lrr dm e90e...
代替for迴圈的方法
為什麼要挑戰自己在 裡不寫for loop?因為這樣可以迫使你去使用比較高階 地道的語法或庫。文中以python為例子,講了不少大家其實在別人的 裡都見過 但自己很少用的語法。這是乙個挑戰。我要你避免在任何情況下寫for迴圈。同樣的,我也要你找到一種場景 除了用for迴圈以外,用其他方法寫都太難。請...