[語法] expicit關鍵字
請問,我在書上看到這一段,但不是很懂
class Cube{
public:
double side;
Cube(double side);
double volume(); //計算Cube面積
bool compareVolume(Cube aCube); //比較兩個面積大小
}
然後
Cube box1(5.0);
if (box1.compareVolume(50.0)){ cout<<"a"; }
else{ cout<<"b";}
(原本是要box1與體積50.0的Cube作比較)
書上說box1.compareVolume(50.0)執行時會等同於
box1.compareVolume(Cube(50.0))
(實際是box1與體積125000.0的Cube作比較)
為避免此問題,需要在Cube constructor加上explicit關鍵字
不是很懂的是為何執行時它會自己作轉換?
compareVolume的參數型態為Cube,但傳入的50.0為double
我所認知的是,應該在compile時便會因型態不同而出錯了
書上說已提供constructor可將引數50.0轉為Cube物件
這地方不是很懂,煩請說明一下,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.48.14
推
08/09 12:08, , 1F
08/09 12:08, 1F
→
08/09 12:08, , 2F
08/09 12:08, 2F
推
08/09 12:24, , 3F
08/09 12:24, 3F
→
08/09 12:25, , 4F
08/09 12:25, 4F
→
08/09 12:26, , 5F
08/09 12:26, 5F
→
08/09 12:34, , 6F
08/09 12:34, 6F
→
08/09 12:35, , 7F
08/09 12:35, 7F
推
08/09 12:52, , 8F
08/09 12:52, 8F
→
08/09 12:55, , 9F
08/09 12:55, 9F
→
08/09 12:55, , 10F
08/09 12:55, 10F
推
08/09 13:06, , 11F
08/09 13:06, 11F
→
08/09 13:06, , 12F
08/09 13:06, 12F
→
08/09 13:06, , 13F
08/09 13:06, 13F
→
08/09 13:07, , 14F
08/09 13:07, 14F
→
08/09 13:09, , 15F
08/09 13:09, 15F
→
08/09 13:10, , 16F
08/09 13:10, 16F
→
08/09 13:10, , 17F
08/09 13:10, 17F
→
08/09 13:23, , 18F
08/09 13:23, 18F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章