EE_DSnP 板


LINE

(几个礼拜後会教,但我想应该要先提示一下,大家比较知道怎麽写) 注意: 题目中的 Less, Greater 不是 functions, 而是 class 的名字哦!! 当你宣告一个 class Less, 然後 overload "()" 这个 operator 时, 你就可以把这个 class 的 object 当作是 functional object 来使用。 在进一步说明之前,请大家区分清楚底下 "()" 的意义: class A { public: A() { ... } A(int i) { ... } bool operator() () const { ... } int operator() (int i) { ... } }; int f(const A& a) { if (a()) // 把 a 当作是 functional object,然後呼叫 bool A::operator() () return a(10); // 把 a 当作是 functional object else return a(20); // 把 a 当作是 functional object } int main() { A a(10); // 呼叫 A's constructor A a = A(10); // 也是呼叫 A's constructor,产生 object 之後 assign 给 a if (a()) { ... } // 呼叫 bool A::operator() () if (A()) { ... } // Error!! 呼叫的是 A's constructor, // 产生的 object 不能直接给 if 做判断!! if (A()()) { ... } // OK, 先呼叫了 A's constructor, 再呼叫 operator() int k = a(20); // 呼叫 int A::operator(int) () f(A()); // 呼叫 A's constructor,产生 object 之後传给 f() 当参数 // 这就是 functional object f(A); // Error!! 不能只是传 class name!! f(a()); // Error!! 要的是 const A&, 不是 bool!! } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.21.240
1F:推 djshen:谢谢老师的解释 刚刚应该是其他地方写错 所以传Less()才有 09/30 14:19
2F:→ djshen:问题 09/30 14:19
3F:→ ric2k1:对了,关於 inherit class, 要注意是否所有 functions 都有 09/30 15:03
4F:→ ric2k1:被定义。更精确地说,如果是 pure virtual function, 09/30 15:05
5F:→ ric2k1:则所有的 inherit classes 都要 implement 这个 functions 09/30 15:06
6F:推 gamerred:想问A a = A(10);的constructor呼叫是不是建立两个物件 09/30 18:36
7F:→ gamerred:再用memberwise assignment? 我的理解中implicit建构似乎 09/30 18:37
8F:→ gamerred:与用explicit呼叫效果只有微妙的差异 而不是在上面那种说 09/30 18:38
9F:→ gamerred:法 是这样吗? 09/30 18:38
10F:推 djshen:所以constructor会回传一个object没错吧? 以前计程一直强调 09/30 19:05
11F:→ djshen:写constructor不可以写回传型态 所以没思考到这点 09/30 19:05
12F:推 gamerred:回大钧:应该说是呼叫constructor建构新物件 09/30 23:04
13F:→ gamerred:而不是constructor回传新物件 这种说法比较正确吧 09/30 23:05
14F:→ ric2k1:回 gamerred:是的,严格来说 A a = A(10) 的确只是直接 10/01 00:10
15F:→ ric2k1:呼叫个 constructor A(10) 去 construct a, 并不会先产生个 10/01 00:12
16F:→ ric2k1:空的 a 再把 A(10) assign 过去。但我觉得这只是 compiler 10/01 00:13
17F:→ ric2k1:的 optimization, 观念上两种说法其实都合理,应该是没有 10/01 00:14
18F:→ ric2k1:太去在意 (写程式的时候) 10/01 00:15
19F:→ ric2k1:^-- 必要 10/01 00:15
20F:推 nfprzkuma:感谢老师的精确解说 以前计程没学过这东西 10/08 16:37







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灯, 水草

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

TOP