Why is “operator bool()” invoked when I cast to “long”?

后端 未结 3 439

I have the following class:

class MyClass {
public:
   MyClass( char* what ) : controlled( what ) {}
   ~MyClass() { delete[] controlled; }
   operator char*() c         


        
3条回答
  •  一个人的身影
    2021-01-22 00:36

    operator bool is the best match, because char* and void* can't be converted to long without an explicit cast, unlike bool:

    long L1 = (void*)instance; // error
    long L2 = (char*)instance; // error
    long L3 = (bool)instance; // ok
    

提交回复
热议问题