关于c++多态
来源:互联网 发布:android网络编程 编辑:程序博客网 时间:2024/06/07 02:38
下面这段代码:
#include <iostream> #include <string.h> class parent{public: virtual void who() { std::cout << "I am class Parent" << std::endl; }};class son : public parent{public: virtual void who() override /*final*/ { std::cout << "I am class Son" << std::endl; }};class daughter : public parent{public: virtual void who() override /*final*/ { std::cout << "I am class Daughter" << std::endl; }};int main(){ son *pmyson = new son; daughter *pmydaughter = new daughter; memcpy(pmydaughter, pmyson, sizeof(*pmyson)); std::cout << "---1----------" << std::endl; pmyson->who(); pmydaughter->who(); std::cout << "---2----------" << std::endl; (*pmyson).who(); (*pmydaughter).who(); // parent *pmyson1 = new son; parent *pmydaughter1 = new daughter; memcpy(pmydaughter1, pmyson1, sizeof(*pmyson1)); std::cout << "---3----------" << std::endl; pmyson1->who(); pmydaughter1->who(); std::cout << "---4----------" << std::endl; (*pmyson1).who(); (*pmydaughter1).who(); // son myson; daughter mydaughter; memcpy(&mydaughter, &myson, sizeof(myson)); std::cout << "---5----------" << std::endl; myson.who(); mydaughter.who(); std::cout << "---6----------" << std::endl; ((parent*)(&myson))->who(); ((parent*)(&mydaughter))->who(); return 0;}输出应该是什么呢?
学过C++,应该你会有自己的答案,但是vs运行一下,可能结果并不是你所想象的。
//输出:---1----------I am class SonI am class Son---2----------I am class SonI am class Son---3----------I am class SonI am class Son---4----------I am class SonI am class Son---5----------I am class SonI am class Daughter---6----------I am class SonI am class Son那如果把注释掉的“final”重新加上呢?
//输出:---1----------I am class SonI am class Daughter---2----------I am class SonI am class Daughter---3----------I am class SonI am class Son---4----------I am class SonI am class Son---5----------I am class SonI am class Daughter---6----------I am class SonI am class Son
作为一个需要不断学习温故的好学之士,我也搞不懂了。
另外,vs编译不过可以使用http://cpp.sh/试试哦。
0 0
- 关于C
- 关于C
- 关于C
- 关于C.
- [c/c++]关于const_cast
- 关于多态,关于 C
- 关于C/C++,Objective-C混合编程
- 关于c runtime library
- [转]关于C语言
- 关于C++BLOG
- 关于维生素C(抗坏血酸)
- 关于C/C++
- 关于C指针
- 关于extern C
- 还是关于c字符串
- 关于C/C++
- 关于C中的 Union
- 关于事件处理(C#)
- Android : assets与res/raw资源目录的区别
- android 协作项目的签名文件的问题,以后补充一下
- 抽象类和接口的区别以及使用场景(记)
- android queryIntentActivities如何寻找出某个intent是否可用
- IOS后台 返回 /Date(1445340103367)/ 时间,转换成 2015-10-20 19:21 这种格式
- 关于c++多态
- ORA-19502: write error on file "", block number (block size
- C++中数组和容器的区别与联系
- spring boot 学习小结1 spring mvc环境搭建
- Ubuntu Server 14.04开发环境配置
- ip修改切换(bat批处理文件)
- 【codeforces 576D】LCS Again
- Educational Codeforces Round 5-B. Dinner with Emma(贪心)
- android中ImageView属性及其详解