C_and_CPP 板


LINE

以下废话只是要表达自己是个初学者,如果问了笨问题还请海涵 ===================================================================== 大家好 先简述一下我程式语言菜鸟的历程 我接触程式语言是大学的课程,人生第一个程式是c 但是教授为了授课内容很快就跳c++(至少上课范例程式都直接存成cpp) 但可能是因为学店的关系吧,其实也没讲多少深入的东西 後来大三进入java的世界,然後深入学习java下的OO概念。 我其实不知道自己学到怎样的程度,只能说比较基本的没问题, reflect以後的比较没在碰。 一个月前借了《c++全方位学习》回来摸索c++,最近才读到类别的章节 发现有些东西跟java的OO概念有点冲突,好不适应XDD 必须要放空去学习 ===================================================================== 1.为何要赋予可实作成员函式於定义类别之外(想请问这个动作有术语吗)? class CRectangle { int x, y; public: void set_values (int,int); int area (void) { return (x*y); } } void CRectangle::set_values (int a, int b) { x = a; y = b; } 为什麽成员函数不在定义类别的时候就决定好,而要在定义类别之外才补完? 是为了提供类似java OO的抽象函数的概念吗? (例如定义一个类别叫做动物,动物会"移动", 但实际上怎麽移动是由子类别去实作,所以 动物类别在移动这个成员函式就先不实作。 请问cpp有这个弹性的原因如上述吗?) 2.inline 好像很棒,预设为何不直接inline? 根据网路资料里头提到(大学课程的教材:C++物件导向及增进效率程式技巧) 在 class 内部直接定义完整的函数,和只定义函数的原型而把具体实现放在 class 外部的唯一区别在於,在第一种情况中,编译器(compiler) 会自动将函数作为 inline 考虑,而在第二种情况下,函数只是一般的 class 成员函数。 然後我又去查inline是什麽东东,以我的了解是: 编译器会对加上inline的函式进行评估, 当展开函式内容比呼叫函式所花的成本还小时就会直接展开函式 而编译器也会评估,如果展开後的效益不够,即便函式加上inline 编译器也不会进行展开。 如果以上我的了解是正确的 那为何cpp不预设所有函式都是inline的作法? 反正展开的效益有编译器为我们把关来决定展开与否不是吗? 为什麽会像现在这样要由使用者自己决定是否要加inline呢? -- ┌─────────────────────────────────┐ │A)台南无糖红茶 E) │ │B)金马青梅绿 F)日月潭红茶拿铁 │ │C)台北金桔毛峰茶 G)桃园芋泥可可 欢迎光临里洽茶铺 │ │D)竹南纯手工爱玉冰 今晚你想来点什麽? │ └─────────────ψliu2007 ───────────────┘ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.192.225.144 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1599189173.A.E56.html
1F:推 steve1012: inline 只是keyword. compiler 可以自行决定是否inline 09/04 12:03
2F:→ Lipraxde: 1. 分别叫做 declaration / definition 09/04 12:08
3F:→ Lipraxde: 如果 class A、B 互相依赖的话应该就只能分开写了,有 09/04 12:08
4F:→ Lipraxde: 时後还会有编译时间、可读性等考量 09/04 12:08
5F:→ Lipraxde: 2 C++ 的 inline 不单单是指要不要 inline function, 09/04 12:12
6F:→ Lipraxde: 在写 header only library 时为了避免 multiple defini 09/04 12:12
7F:→ Lipraxde: tion,会帮写在 header 里的 function 加 inline 关键 09/04 12:12
8F:→ Lipraxde: 字 09/04 12:12
9F:→ Lipraxde: 用来告诉 linker 在 link 阶段看到多个 definition 是 09/04 12:13
10F:→ Lipraxde: 正常的,不要报错 09/04 12:13
11F:推 eye5002003: 你喜欢的话可以全写在一起塞在标头档里面,分开写的理 09/04 12:15
12F:→ eye5002003: 由主要是想缩短编译时间or不想给别人看程式码 09/04 12:17
13F:→ eye5002003: 然後C++使用者喜欢自己做决定,不想让编译器"预设" 09/04 12:18
14F:→ sarafciel: 因为inline跟noninline在odr规范上面有差 09/04 12:49
15F:→ sarafciel: inline要translation unit有看到definition才行 09/04 12:54
16F:推 CoNsTaR: 因为全部 inline binary 会肥死吧 orz 09/04 13:00
17F:→ loveme00835: 你要不要先换一本书 09/04 13:03
18F:→ loveme00835: 在讨论 inline 以前, 你知不知道 include 是在做什麽 09/04 15:59
19F:→ loveme00835: 事情? 它和 import 有什麽不一样? 当多个原始码档案 09/04 15:59
20F:→ loveme00835: 都 include 相同的标头档 (类别定义), 编译时会发生 09/04 15:59
21F:→ loveme00835: 什麽事? 因为你还没办法回答上面的问题, 所以才会有 09/04 15:59
22F:→ loveme00835: 奇怪的结论 09/04 15:59
23F:→ protoss: 其实借什麽书都不重要...重要的是你有没有真的翻过...我 09/04 19:16
24F:→ protoss: 是不太信inline这种东西需要找本好书才会有正确的观念... 09/04 19:17
25F:→ protoss: 不过当你说java的OO跟C++有冲突时我是觉得你该静下心来决 09/04 19:17
26F:→ protoss: 定好其中一本给他翻完...就是完全不太需要动脑的翻完... 09/04 19:18
27F:推 DerLuna: inline每个地方都要展开占用一份记忆体会让程式变肥 09/05 00:56
28F:→ DerLuna: 从省空间的角度预设不inline才是比较好 09/05 00:56
29F:推 LiloHuang: inline 不一定会变快 https://tinyurl.com/j34kmle 09/06 10:56







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

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

TOP