Példa

class MyClass {
public:
MyClass(int param, int param2=0);
operator double() 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 == b[i] ){
//b[i] implicit módon konvertálva MyClass típusúvá
}
}
}

Megoldás
Egyetlen argumentummal rendelkező konstruktorok esetén (amelyek nem másolat konstruktorok), illetve olyan konstruktorok esetén, amelyeket a fordító átalakításokhoz használhat, deklarálja a konstruktort explicit módon. Az implicit típusú átalakítási operátorok használata helyett, amelyeket a fordító nem várt módon használhat, használjon egyéni metódusokat explicit módon.

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] ){
//a explicit módon dupla pontosságúvá konvertálva
}
}
}