Pro konstruktory jednoho argumentu (které nejsou konstruktory kopie) nebo konstruktory, které může kompilátor použít pro převod, deklarujte konstruktor jako explicitní. Místo použití operátorů převodu implicitního typu, které může kompilátor použít neočekávaně, použijte explicitně vlastní metody.
class MyClass {
public:
explicit MyClass(int param, int param2=0);
double toDouble() const;
bool operator==(const MyClass& left, const MyClass& right);
private:
double num;
};
int main(int argc, char* argv[]){
MyClass a;
int b[] = {0,1,2};
for(int i=0; i<3; i++)
if( a.toDouble() == b[i] ){
}
}
}
|
|