Code:
namespace Edu {
class TestBase {
public:
TestBase() { }
const char * const GetMessage() const { return "Edu::TestBase()" ; }
operator const char * const () const { return this->GetMessage() ; };
};
class TestDerived : public TestBase {
public:
TestDerived() { }
operator const char * const () const { return "Edu::TestDerived()" ; };
};
void Funct( const char * const = "Hello, C++" );
};
void Edu::Funct( const char * const msg ) {
std::cout << msg << std::endl;
}
int main() {
const Edu::TestBase ob_base ;
const Edu::TestDerived ob_derived ;
std::cout << ob_base << std::endl;
std::cout << ob_derived << std::endl;
Edu::Funct( ob_derived ) ;
Edu::Funct( ob_base ) ;
Edu::Funct( "Hi from C++ !!" );
return 0;
}

