轉(zhuǎn)換函數(shù)
class A {
public:
operator double() {
// return a double value
}
};
explicit關(guān)鍵字
class A {
public:
explicit A(int a) {}
};
指定構(gòu)造函數(shù)需要顯式調(diào)用,這樣編譯器就不會(huì)做隱式轉(zhuǎn)換,避免因one-argument構(gòu)造函數(shù)而導(dǎo)致意料之外的類型轉(zhuǎn)換。
pointer-like class
class A {
public:
T& operator*() {
return *data;
}
T* operator->() {
return data;
}
private:
T* data;
};
function-like class
class A {
public:
operator() {}
};