c++ cli - Accessing members of class after casting pointer in C++ -


i newbie in c++. can tell me why following source code runs well?

#include <iostream>  using namespace std;  class a{ public:     a(){ cout << "create a" << endl; }     void saygoodbye() { cout << "goodbye" << endl; } };  class b{ public:     b() { cout << "create b" << endl; }     void sayhello() { cout << "hello" << endl; } };  int main(array<system::string ^> ^args) {     a* = new a();      ((b*)a)->sayhello();     a->saygoodbye();      return 0; } 

output:

create hello goodbye 

what wonder why can access b::sayhello casting that? can access every public members of class way?

yes, can.

but, no, can't.

when use c-style cast that, promising computer know you're doing, , cast valid. when is valid, you're fine. when it's not, it's your fault.

in case, it's not, , it's fault.

now, can ask why "runs well", that's incidental: that's pure chance. once program compiled, it's going crash or murder step-children if literally access invalid memory. in particular case, you're not accessing invalid memory.

doesn't mean you're right, though.

don't this.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -