c++親ポインタがサブクラスポインタに変換された後にサブクラスのメンバー関数を呼び出す問題
#include
using namespacestd ;
class A{
public:
void display(){cout << "A class" << endl ;}
} ;
class B:public A{
public:
void displayB(){cout << "B class" << endl ;}
} ;
int main(){
A a ;
((B*)&a)->displayB() ;
return 0 ;
}
B class
, , B , ?
:
int main()
{
int a ; // int
((B*)&a)->displayB() ;
return 0 ;
}
. .
B::displayB , .
class B x, displayB x, .
:
1, 2, 3, , , , 。 , 。( ) 4, 。 。 , 。
MFC C++ : 1、 " " " ", 2、 “ ” “ ”, (explicit cast), 。 3、 “ ”, , , , , 1 。
#include #include
using namespace std;
class A { public: char str[20]; void f(){cout<
class B:public A { public: int i; char sb[20]; B(){cout<
int main(int argc, char *argv[]) { // A b; // , A *pa=&b; pa->add(); // , , pa B A . //pa B , , , pa A , // . ,
B *pb=(B *)pa; // , . . // . . B , // 。 pb->add(); add pb // this pb->add();
// pa , , // , . pb->i=100; char dsd[100]; strcpy(pb->sb, " class B's sb."); strcpy(pb->str, " class A's str.");
//pb->f() , , // . , pb->f(); pb->ff(); pb->fff();
system("PAUSE"); return 0; }