以下是引用IT男year在2013-12-21 08:49:29的发言:
#include<iostream>
using namespace std;
class A
{
public:
A(){}
virtual void get()
{
cout<<"这是类A里的get()函数"<<endl;
}
};
class B:public A
{
public:
B(){}
virtual void get()
{
cout<<"这是类B里的get()函数"<<endl;
}
void get1()
{
cout<<"这是类B里的get1()函数"<<endl;
}
};
int main()
{
A p,*p1;
B T;
p1=&p;
p1->get();
p1=&T;
p1->get();
//p1->get1();------>这就是访问派生类中新增加的成员函数,不进行类型转换是不能访问的。
((B *)p1)->get1();----->这就是类型转换啦!
return 0;
}
不懂请看这段示例代码!!!!!
#include<iostream>
using namespace std;
class A
{
public:
A(){}
virtual void get()
{
cout<<"这是类A里的get()函数"<<endl;
}
};
class B:public A
{
public:
B(){}
virtual void get()
{
cout<<"这是类B里的get()函数"<<endl;
}
void get1()
{
cout<<"这是类B里的get1()函数"<<endl;
}
};
int main()
{
A p,*p1;
B T;
p1=&p;
p1->get();
p1=&T;
p1->get();
//p1->get1();------>这就是访问派生类中新增加的成员函数,不进行类型转换是不能访问的。
((B *)p1)->get1();----->这就是类型转换啦!
return 0;
}
不懂请看这段示例代码!!!!!
谢谢!
dynamic_cast<B *>(p1)语句是否与(B *)(p1)等效呀?