类型兼容性的解决心方法
来源:互联网 发布:网络新媒体概论微盘 编辑:程序博客网 时间:2024/06/06 17:03
#include <iostream>using namespace std;class parent{public:parent(int a){this->va = a;}virtual void print(void){cout << "基类的a" <<this->va<< endl;}private:int va;};class child : public parent{public:child(int a) : parent(100){this->a = a;}virtual void print(void){cout << "派生类的a" <<this->a<< endl;}private:int a;};int main(){child oop(10);parent oop1(20);parent* p = NULL;p = &oop;p = &oop1;parent &pt = oop;p->print();pt.print();system("pause");return 0;}
* 父类指针可以直接指向子类对象
* 父类引用可以直接指向子类对象
上述结论不管是父类指针还是引用指向子类对像,调用的print都是父类的print,这种解决办法是在print的实现前面加上virtual关键字
实例:
#include <iostream>using namespace std;class parent{public:parent(int a){this->va = a;}virtual void print(void){cout << "基类的a" <<this->va<< endl;}private:int va;};class child : public parent{public:child(int a) : parent(100){this->a = a;}virtual void print(void){cout << "派生类的a" <<this->a<< endl;}private:int a;};void test1(parent* p){p->print();}void test2(parent & pt){pt.print();}int main(){child oop(10);parent oop1(20);parent* p = NULL;p = &oop;p = &oop1;parent &pt = oop;p->print();pt.print();test1(&oop);test1(&oop1);test2(oop);test2(oop1);system("pause");return 0;}这样就可执行到子类的print了,这里的virtual也可以只加载父类的virtual前,这也是一种多态的调用案例
阅读全文
0 0
- 类型兼容性的解决心方法
- 解决兼容性的方法整理
- 反射方法参数的类型兼容性
- 锁的类型和兼容性
- 如何解决浏览器的兼容性
- 解决ie浏览器的兼容性!!!
- 如何解决placeholder的兼容性
- 判断各种ie方法,用来解决兼容性
- appendChild,setAttribute方法的兼容性
- DIV CSS兼容性解决IE6/IE7/FF浏览器的通用方法完美兼容
- 简单方法-改变win7兼容性(SQLServer,Oracle)解决不能登录的问题
- DIV+CSS兼容性解决IE6/IE7/FF浏览器的通用方法
- 解决ie兼容性的有用的js
- IE8兼容性相关问题的解决
- 解决XHTML+CSS兼容性的五个方案
- 解决IE6下及IE8的兼容性
- 如何解决浏览器的兼容性(转载)
- ie6,7,8的兼容性解决
- lua中执行系统命令
- 一道面试题引发的思考
- ELK单机版搭建之ElasticSearch-head插件安装
- 1.初探vs项目文件结构
- Laravel5.1 实现第三方登录认证(包括微博、QQ、微信、豆瓣) 2017-01-08 18:08 457人阅读 评论(0) 收藏 举报 分类: laravel框架(33) 目录(?)[
- 类型兼容性的解决心方法
- java--多线程-实现线程
- awk命令【转】
- hibernate一级缓存与快照
- Lua 基本语法
- Scrapy爬虫入门教程 安装和基本使用
- php使用Url读取文件的内容及file_get_contents用法
- php ip2long 出现负数原因及解决方法
- BZOJ1023: [SHOI2008]cactus仙人掌图(单调队列优化DP)