猜猜这个结果是什么

C、C++和Java语言
回复
头像
自由建客
论坛版主
帖子: 13436
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

猜猜这个结果是什么

#1

帖子 自由建客 » 2013-04-08 17:33

[cpp]#include <iostream>

using namespace std;

class Base {
public:
double Data;
};

class Sub1: public Base {
public:
double Data1;
};

class Sub2: public Base {
public:
int Data2;
};

int main() {
Sub1 s1; s1.Data= 0.1; s1.Data1= 1.1;
Sub1 s12; s12.Data= 0.12; s12.Data1= 1.12;
Sub2 s2; s2.Data= 0.2; s2.Data2= 2;
Base *pb= &s1;
cout << s1.Data << ' ' << s1.Data1 << endl;
*pb= s12;
cout << s1.Data << ' ' << s1.Data1 << endl;
*pb= s2;
cout << s1.Data << ' ' << s1.Data1 << endl;
return 0;
}
[/cpp]
:em09
头像
只是说
帖子: 1138
注册时间: 2012-03-12 22:44
系统: 贱兔
来自: 株洲
送出感谢: 32 次
接收感谢: 5 次

Re: 猜猜这个结果是什么

#2

帖子 只是说 » 2013-04-08 18:10

擼過。

Sent from my Lenovo_A2105 using Tapatalk 2
我的博客
头像
YeLee
论坛版主
帖子: 26386
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
送出感谢: 25 次
接收感谢: 307 次
联系:

Re: 猜猜这个结果是什么

#3

帖子 YeLee » 2013-04-08 18:11

该死 ,又是这种东西。 :em20 :em20 :em20
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
自由建客
论坛版主
帖子: 13436
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

Re: 猜猜这个结果是什么

#4

帖子 自由建客 » 2013-04-08 19:30

YeLee, 为什么要说「又」?
头像
YeLee
论坛版主
帖子: 26386
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
送出感谢: 25 次
接收感谢: 307 次
联系:

Re: 猜猜这个结果是什么

#5

帖子 YeLee » 2013-04-08 21:38

不过是作为一个门外汉,赞美一下你们千变万化的CPP而已。 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
sighforever
帖子: 234
注册时间: 2007-08-07 18:14
送出感谢: 4 次
接收感谢: 3 次

Re: 猜猜这个结果是什么

#6

帖子 sighforever » 2013-04-08 22:35

代码: 全选

0.1 1.1
0.12 1.1
0.2 1.1
Base *pb= &s1;
已经将Sub1作为Base来看待了,下面的赋值都是都是调用Base的相应函数。
什么是历史?历史是魔术师箱子里那只变来变去的小白鸽;
什么是真相,真相只是观众最愿意看到的硬币的那一面。
头像
qgymib
帖子: 539
注册时间: 2010-04-02 16:44
系统: openSUSE 13.2 x64
送出感谢: 2 次
接收感谢: 9 次

Re: 猜猜这个结果是什么

#7

帖子 qgymib » 2013-04-08 23:19

最讨厌这种代码了,毫无意义,计算机二级专用
正在建设中的个人博客
头像
自由建客
论坛版主
帖子: 13436
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

Re: 猜猜这个结果是什么

#8

帖子 自由建客 » 2013-04-09 12:25

qgymib 写了:最讨厌这种代码了,毫无意义,计算机二级专用
是否有意义要看人去。这段代码揭示了一个深层次的哲学问题,给了我初韵一个重大启示,根治泛型的协变、逆变问题。
头像
qgymib
帖子: 539
注册时间: 2010-04-02 16:44
系统: openSUSE 13.2 x64
送出感谢: 2 次
接收感谢: 9 次

Re: 猜猜这个结果是什么

#9

帖子 qgymib » 2013-04-09 17:37

自由建客 写了:这段代码揭示了一个深层次的哲学问题,给了我初韵一个重大启示,根治泛型的协变、逆变问题。
原谅我的鲁莽,我的言论是从平时代码运用上去讲的,没有考虑到学习方面 :em02
在平时编程的时我候极少去用指针的方式进行协变,因为这样的方式使得对指针有恐惧症的人会放弃对这段代码的理解(指针是什么,能吃么)。 :em04
正在建设中的个人博客
回复

回到 “C/C++/Java”