傳建構函式,不會引起拷貝建構函式的呼叫
當傳乙個乙個已經構造好的物件時,
[cpp]view plain
copy
#include
#include
#include
#include
using
namespace
std;
class
foo
~foo()
foo(const
foo& rhs)
foo& operator=(const
foo& rhs)
};
void
f(foo f)
intmain()
結果為:
[c-sharp]view plain
copy
ctr
copy-ctr
dectr
dectr
當傳參時構造物件時,
[c-sharp]view plain
copy
intmain()
結果就變成:
[c-sharp]view plain
copy
ctr
dectr
引申:同理在模板類當中,同樣成立,你不要把它看成乙個函式呼叫了,它是也乙個臨時物件。如下:
[cpp]view plain
copy
#include
#include
#include
#include
using
namespace
std;
template
<
typename
t>
class
~print()
print(const
print& rhs)
print& operator=(const
print& rhs)
void
operator()(
const
t& elem)
};
void
f(print<
int> f)
intmain()
new操作符-空間還可以這樣分配
[cpp]view plain
copy
#include
using
namespace
std;
class
foo
~foo()
foo(const
foo& rhs)
foo& operator=(const
foo& rhs)
};
intmain()
在上例中,foo *p2 = new(p) foo(f); 意思是說在物件p的空間上,構造乙個跟f一樣的物件。
而foo *p3 = new(str) foo(f);是在乙個字串的空間上構造的。
下面兩個函式實際上事一樣的,你知道麼?
[cpp]view plain
copy
typedef
void
(*func)();
func set_handler1(func f)
void
(* set_handler2(
void
(*f)()))()
物件的隱式構造
[cpp]view plain
copy
//隱式構造
class
foo
foo(const
foo& f)
foo& operator=(const
foo& f)
~foo()
};
class
test
};
void
test()
intmain()
這是可以執行的,也是c++支援的.
如果你不想讓它這樣趁你不注意,偷偷摸摸的構造了物件, 你可以在建構函式前面加上explicit.
[c-sharp]view plain
copy
class
foo
foo(const
foo& f)
foo& operator
=(const
foo& f)
~foo()
};
這時,就會報錯.
預編譯指令的妙處
[cpp]view plain
copy
#define _b(x) #x
#define print(x, y, z) print_##z(x,y)
class
biginteger
};
void
print_max(
inti,
intj)
void
print_min(
inti,
intj)
void
test(
inti,
intj)
intmain()
你猜猜結果?
上面的#x表示把x生成成為乙個字串.
a##b是把ab連線成乙個字串.
上面的兩個用法和用途,相信可以讓你感到妙不可言.
結果:[c-sharp]view plain
copy
12122222222222222222222222
2 1
請按任意鍵繼續. . .
《你不知道的JS(中卷 )》 五 語法
語法 grammar 與詞法 syntax 不同。後者強調語言的運算子 關鍵字等。而語法定義了此法規則是如何構成可執行的程式 的。語句 statement 與表示式 expression 舉例說明 var a 3 6 a 3 6是乙個賦值表示式,加上var,就表明是乙個宣告同時賦值的語句,即語句由乙...
你不知道的 和
開發中,編寫有一定逼格的 是每個程式猿都追求的。經常用來判斷的符號 和 也經常用來定義變數哦,你知道嗎?邏輯與 在有乙個運算元不是布林值的情況下,就不一定返回布林值。比如以下情況 1 第乙個運算元是物件,返回第二個數 var myinfo console.log myinfo 2 輸出22 第二個運...
你不知道的box shadow
我們可以僅使用乙個div利用shadow配合animation實現很多豐富的效果 github 求 必需。水平陰影的位置。允許負值。v shadow 必需。垂直陰影的位置。允許負值。blur 可選。模糊距離。spread 可選。陰影的尺寸。color 可選。陰影的顏色。請參閱 css 顏色值。ins...