指向基类/派生类指针,指向基类成员/派生类成员指针,及互相赋值
来源:互联网 发布:56视频软件下载 编辑:程序博客网 时间:2024/04/28 17:34
可以安全地将一个指向基类成员的指针赋值给一个指向派生类的成员的指针,反过来不行。
另外,可将一个指向派生类对象的指针赋值给一个指向基类得指针,
即基类指针可在不加显式转换的情况下指向派生类对象。
代码测试如下,结果确实如上面所说:
#include ...
class Base
{
public:
Base() {}
virtual ~Base(){}
virtual void show() { cout << "Base"; }
};
class Derived:public Base
{
public:
Derived():Base() {}
~Derived() {}
void print() {}
void show() { cout << "Derived"; }
};
int main()
{
Base base;
Derived derived;
Base *pb = &derived; // Ok,基类指针指向派生类对象;
Derived *pd = &base; // Error,派生类指针指向基类对象;
pb->show(); //Ok,但输出 derived;
pb->print(); //Error. 不可调用仅派生类有的方法;
typedef void (Derived::*Pderived)();
Pderived pmend = & Base::show; // Ok,基类成员的指针赋值
//给派生类成员的指针
(derived.*pmend)(); // 使用派生类成员指针
typedef void (Base::*Pbase)();
Pbase pmenb = & Derived::show; // Error.派生类成员的指针
//赋值给基类成员的指针
}
- 指向基类/派生类指针,指向基类成员/派生类成员指针,及互相赋值
- 指向基类/派生类指针,指向基类成员/派生类成员指针,及互相赋值
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类
- 基类指针指向派生类对象
- 基类指针指向派生类
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- YTU-OJ-Problem J: B3 指向基类的指针访问派生类的成员函数
- OJ——指向基类的指针访问派生类的成员函数
- YTU 2636: B3 指向基类的指针访问派生类的成员函数
- [YTU]_2636 ( B3 指向基类的指针访问派生类的成员函数)
- C++ 基类指针指向派生对象/派生类指针指向基类对象
- 基类指针指向派生类是安全的,而派生类指向基类则是不安全的
- C++基类指针与派生成员
- 欢迎光临我的小站
- 开源,选择Google Code还是Sourceforge?
- 理解在保护模式下Internet Explorer的工作方式
- int float double 最大值,最小值
- Linux use notes
- 指向基类/派生类指针,指向基类成员/派生类成员指针,及互相赋值
- 找东西的感想
- 传智播客--Pull解析XML文件,SharedPreferences,SQLite数据库
- 屏幕亮度和分辨率
- 三明行小记
- 流水灯终于做得了,^_^
- 新一代分布式键值对数据库——Cassandra
- 以后就在这里了
- Struts2.1.8+Spring3.0+Ibatis2.3.4集成(五)