[转载]关于C++的子类指针指向父类.
来源:互联网 发布:最终幻想灵魂深处 知乎 编辑:程序博客网 时间:2024/06/08 14:26
http://blog.sina.com.cn/s/blog_3ce156ce01000af4.html
1,直接用基类指针引用基类对象
2,直接用派生类指针引用派生类对象
3,用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的,
但是只能引用基类成员。若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态性)
4,用派生类指针引用基类的对象。这种引用方式会导致语法错误。派生类指针必须先强制转换为基类指针,这种方法是不安全的。
而在侯捷的深入浅出MFC中第二章C++重要性质中:
1、如果你以一个"基类之指针"指向一个"派生类之对象",那么经由该指针你只能调用该基类所定义的函数
2、如果你以一个“派生类之指针”指向一个“基类之对象”,你必须先做明显的转型操作(explicit cast),这种作法很危险。
3、如果基类和派生类都定义了“相同名称之函数”,那么通过对象指针调用成员函数时,到底调用了那个函数,必须视该指针的原始类型而定,而不是视指针实际所指的对象的类型而定,这与第1点其实意义相通。
#include <iostream>
#include <stdlib.h>
using namespace std;
class A
{
public:
};
class B:public A
{
public:
};
int main(int argc, char *argv[])
{
}
//总结就是(标题点亮重点:子类指针指向父类): 只建立了父类的对象A, A::this的对象地址都没变,转换前后虽然指向的对象都是pa(父类对象地址),调用的时候却只根据子类指针实际类型去调用函数..编译器建立类的时候就确定类的成员函数名字,如add_A_XXX
指向基类的指针可以指向派生类,反之不行. 关键是这里根本没有创建派生类的对象.单纯用派生类指针调用他的函数而已
3,用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的,
但是只能引用基类成员。若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态性)
1、如果你以一个"基类之指针"指向一个"派生类之对象",那么经由该指针你只能调用该基类所定义的函数
3、如果基类和派生类都定义了“相同名称之函数”,那么通过对象指针调用成员函数时,到底调用了那个函数,必须视该指针的原始类型而定,而不是视指针实际所指的对象的类型而定,这与第1点其实意义相通。
- [转载]关于C++的子类指针指向父类.
- [转载]关于C++的子类指针指向父类
- 关于c++指向子类的基类指针,与指向子类的子类指针
- C++关于父类指针指向子类对象的问题
- 关于C++的子类指针指向父类
- 关于C++的子类指针指向父类
- 关于C++的子类指针指向父类
- c++,父类指针指向子类对象的相关说明
- 父类指针指向的子类实例
- C++的子类指针指向父类
- 指向父类的指针可以指向子类的对象
- C++关于基类指针指向子类对象的问题
- C++ 父类指针指向子类对象||子类指针指向父类对象的理解
- C++ 父类指针指向子类对象||子类指针指向父类对象的理解
- 代码片段----指针的写法、父类指针指向子类
- 父类指针指向子类对象的理解
- 父类指针指向子类对象的理解
- 父类指针指向子类对象的理解
- 微信公众帐号开发教程第11篇-符号表情的发送(上)
- HDU 1690 Bus System.
- 数据库并发控制和隔离级别
- LeetCode —— Longest Substring Without Repeating Characters
- 开发EJB容器模型的WEB服务
- [转载]关于C++的子类指针指向父类.
- java性能优化之visualvm(一)
- 腾讯技术类面试经历
- 操作系统的安装与启动基本原理
- Ubuntu 12.04搭建hadoop单机版环境
- 程序代码复用性
- 在VS中添加lib的第三种方法
- Android(安卓)系统USB-OTG-HID外设通讯开发
- 迅雷的地址解析