java 板


> 我一直希望 C/C++ 能够把他化简成 > function fa (x) > { > if (x % 1) > { > cout << "Yes!"; > return 1; > } else { > cout << "No!"; > return 0; > } > } 用template+转型设施已经可以达成你要的效果, 而且还有type-safe的优 点 如下: template<typename P> int fa(P& x) { if (x % 1) {...return 1;} else{return 0;} } int i= fa(1); class1 c1= fa(1); //class1中必须定义建构式 class1(int i), // operator=(int i); class2 c2= fa(class3()); //class2 中必须定义建构式 class2(int i) , // operator=(int i); // class3必须定义 operator % 这样的作法跟script的差别就在於script用一个共通的type来函括所有type (如vb的variant, js的var) 所以当函式回一个共通的type时,他可能是 int, 可能是char, 可能是一个object, 这时程式要怎麽处理就完全依靠 程式"内隐"的规则. 例如, function func(x) { if (x==1) return CreateObject("xxx.xxx"); else return 1;} 请问, 呼叫func的客户端要怎麽能知道他拿到的是int还是 object? 答案是客户端得去了解func的实作内容. 这样的情形严重的伤害到程式 的封装与抽像特性. 所以script并不适合开发大型程式. 而使用c++, 你可以使用template让function享有类似script的弹性 又不损及type-safety及runtime performace. 댊 high-level, type-safety, efficiency是c++的特性, 要让c++改用 script的方式就好像叫c++自废武功一样 至於你下面所提的例子, 事实上script的变数并非没有型别, 而是他们都是继承至同一个共通的型别,好比是java跟.net的共同基底类别 vb的variant也是类似的观念. 而script把这类别的宣告藏了起来,好让程式 简化. 所以以下面的c++程式来看, c++也只是把这之间的关系描述出来. 你可说c++很繁琐, 但是至少, 在程式中描述出来的继承关系, 可以让 compiler提早揪出错误的型别使用. 减少在runtime出错的可能. 更可加强 程式的可读性,结构性,逻辑性. 你可以想像一下, 如果dynamic传回 的一定是bicycle or car之类的交通工具, 为何不在程式明确的指出 dynamic只会回传交通工具这件事 ,却要让使用者冒着可能不小心把回传 的交通工具当成建筑物来使用的风险, 其道理何在? 另外, union的作法绝对是最差的,完全不用考虑. > 深入范例:(很重要的编程风格范例) > 尝试思考下面这个例子: > function dynamic (x) > { > if (x % 1) > return Bicycle(x); > else > return Car(x); > } > 这可好了,编译器该如何做?我尝试着将上面的函式翻译成 C++ > 解法一:使用基础类别再加以继承之。 > class CC { …略… } ; > class Bicycle : CC { …略… }; > class Car : CC { …略… }; > template<class T> > CC * dynamic(T x) > { > if (x%1) > return new Bicycle(x); > else > return new Car(x); > } -- ※ Origin: 枫桥驿站<bbs.cs.nthu.edu.tw> ◆ From: NK219-91-119-85.adsl.dynamic.apol.com.tw







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草
伺服器连线错误,造成您的不便还请多多包涵!
「赞助商连结」






like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP