社区
C++ 语言
帖子详情
C++之 身在曹营心在汉
turing-complete
2011-05-13 10:47:54
为什么我发现身边的很多程序员,名义上用着C++语言,但却热衷地写着C风格的代码。
提到字符串,他们就 char* ,提到数组他们就 new int[]。用string 和 vector 代替不了此两者嘛?
代替不了的话,有没有人能给我反例?哪怕是为了兼容旧代码,我也可以做到代码里看不到char* 吧?
我们选择了c++不就是选择了,开发效率和运行效率的折中嘛,为什么要这么热衷于C代码?
作为一个愤青,呵呵,每每看到如是代码,我的内心总是久久的不能平静,坐等开导者。
...全文
4395
169
打赏
收藏
C++之 身在曹营心在汉
为什么我发现身边的很多程序员,名义上用着C++语言,但却热衷地写着C风格的代码。 提到字符串,他们就 char* ,提到数组他们就 new int[]。用string 和 vector 代替不了此两者嘛? 代替不了的话,有没有人能给我反例?哪怕是为了兼容旧代码,我也可以做到代码里看不到char* 吧? 我们选择了c++不就是选择了,开发效率和运行效率的折中嘛,为什么要这么热衷于C代码? 作为一个愤青,呵呵,每每看到如是代码,我的内心总是久久的不能平静,坐等开导者。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
169 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zenner3000
2011-06-19
打赏
举报
回复
[Quote=引用 163 楼 wgm001 的回复:]
接上面,
新手用c++写出这样的代码, 可以理解, 基本上刚开始, 都是这样子, 但是一个写了二两年代码的人, 还是这副德性, 那就算了, 我觉得这些人还是别干程序员了得好, 免得影响下一代程序员...
正如楼上几位所说, 是受那些垃圾前辈的影响.
这些垃圾前辈可能对某方便确实有经验, 但写出的代码, 就跟谭浩强的书上的代码一样, 连运算符旁边空格都不敲, 美名其日, 能正常运……
[/Quote]
嗯,学习了
tulipcaicai
2011-05-17
打赏
举报
回复
C++有容乃大
tomatobin
2011-05-17
打赏
举报
回复
lz,个人风格吧,现在很多高校教学用的第一门语言课还是c,用着用着就习惯了哈
xiaopoy
2011-05-17
打赏
举报
回复
话说,LS的#163写过编译成功的程序没啊?linux的源代码怎么样呢?windows的API方格也不是唯一的方式,有时间研究模板什么的来规划代码,我还不如去玩会儿汇编代码优化跳转数量和opcodes长度呢。
jackzhhuang
2011-05-16
打赏
举报
回复
用char*生成的汇编代码相对简单点,也就是效率高点。所以,如果一个字符串只是一般性的操作或者作为参数传递,那么用char*其实比用string好。
用char*做参数,是因为函数若是作为接口的方法导出去给其他模块用,那么最好就用char*,因为其他模块有可能是其他编译器编译的,编译string生成的代码可能会不一样,这样在调用的时候会崩溃。
至于数组,vector完全可以替代new[],有人要是觉得不可以,那么得多看看书了。
turing-complete
2011-05-16
打赏
举报
回复
[Quote=引用 155 楼 yanshuishui 的回复:]
很多新手的代码没的选择,都是跟项目中其他前辈学的,因为大家的代码格式最好统一,所以就这么遗传下来了吧...
[/Quote]
嗯 有点道理哈
turing-complete
2011-05-16
打赏
举报
回复
[Quote=引用 154 楼 zhao4zhong1 的回复:]
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编并单步执行一遍不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编并单步执行。)
[/Quote]
这位兄台,我发现您是逢贴必回啊。可你也不能老用这句话复制了来回贴啊,话是不错,也得看看合不合时宜吧。
turing-complete
2011-05-16
打赏
举报
回复
[Quote=引用 156 楼 wgm001 的回复:]
我也一愤青.
那些什么都喜欢自己写这代码的人, 一般都是新手, 或者不思进取的顽固份子...
这些人死活都不愿意学习新的东西, stl在他们嘴里骂成垃圾, boost也是垃圾, ace也是垃圾, 神马都是垃圾...
这样的人不思进取很恶心, 你要说他, 他还会跟你较劲, 他们还会说, stl花半小时就学会了, 但我就是觉得他垃圾, 效率低等等借口...
我奉劝这些朋友干脆直……
[/Quote]
哈哈,这么大的世界就是知己啊
wgm001
2011-05-16
打赏
举报
回复
我也一愤青.
那些什么都喜欢自己写这代码的人, 一般都是新手, 或者不思进取的顽固份子...
这些人死活都不愿意学习新的东西, stl在他们嘴里骂成垃圾, boost也是垃圾, ace也是垃圾, 神马都是垃圾...
这样的人不思进取很恶心, 你要说他, 他还会跟你较劲, 他们还会说, stl花半小时就学会了, 但我就是觉得他垃圾, 效率低等等借口...
我奉劝这些朋友干脆直接写c代码吧, c++不是c, 所以别把c++当c用了, 若是硬要拿一把斧头去干杀猪这事情, 那我只能说你是神人, 牛人, 牛B, 你比谁都牛...
daimen_2014
2011-05-16
打赏
举报
回复
很多新手的代码没的选择,都是跟项目中其他前辈学的,因为大家的代码格式最好统一,所以就这么遗传下来了吧...
赵4老师
2011-05-16
打赏
举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编并单步执行一遍不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编并单步执行。)
冻结
2011-05-16
打赏
举报
回复
大家都把
char* buff;
char* str;
混淆了。
char* buff 可以是 unsigned char*,int*,short*, void*。
char* str 尾要有'\0',经常配合 C 函数strxxx() 来使用。
什么风格的代码,有些公司代码规范规定,有些自己做主,我们不必强求别人怎么写。
heguo
2011-05-16
打赏
举报
回复
c#吧
turing-complete
2011-05-16
打赏
举报
回复
[Quote=引用 145 楼 verycctv 的回复:]
“提到字符串,他们就 char* ,提到数组他们就 new int[]”
如果像楼主说的这样,他们只会用char* 只会用new int[]那可能是自己太不思进取了,如果是很了解stl,那可能就有其他的原因吧。猜测一下。
1 惯性。第一语言对人程序员产生的影响很大,c或java的程序员用c++肯定自己不同的偏好,会有一些冲突,包括编程的习惯和思想,解决问题的手段等等。
2 需要。c还是有它不……
[/Quote]
谢谢这位仁兄的忠告
turing-complete
2011-05-16
打赏
举报
回复
[Quote=引用 149 楼 berkowitz 的回复:]
如果是做跟嵌入式系统相关的,就会出现这种情况。其编译器支持部分的c++语言,但是对于很多特性无法支持,例如多继承、虚继承,stl、boost等更加支持不起来。那么这个时候的代码就会是c++框架加c style的代码风格
[/Quote]
这个前面提过了
berkowitz
2011-05-16
打赏
举报
回复
如果是做跟嵌入式系统相关的,就会出现这种情况。其编译器支持部分的c++语言,但是对于很多特性无法支持,例如多继承、虚继承,stl、boost等更加支持不起来。那么这个时候的代码就会是c++框架加c style的代码风格
turing-complete
2011-05-16
打赏
举报
回复
[Quote=引用 147 楼 sevencat 的回复:]
我想可能是因为stl的学习成本过分高,在试图解决问题的时候引入了另一堆复杂性。
其实有时候可能性能真不是问题,习惯才是问题。
即使像网络接收那种也是可以用c++的,比如说可以用类似boost的那个固定array,我还是那句话,stl太复杂了,很多人为了减轻负担,就选择了直接不用,这样可以把更多时间用在写逻辑方面。
[/Quote]
七猫兄高见啊
wgm001
2011-05-16
打赏
举报
回复
接上面,
新手用c++写出这样的代码, 可以理解, 基本上刚开始, 都是这样子, 但是一个写了二两年代码的人, 还是这副德性, 那就算了, 我觉得这些人还是别干程序员了得好, 免得影响下一代程序员...
正如楼上几位所说, 是受那些垃圾前辈的影响.
这些垃圾前辈可能对某方便确实有经验, 但写出的代码, 就跟谭浩强的书上的代码一样, 连运算符旁边空格都不敲, 美名其日, 能正常运作...
但话又说回来, 即使是自己是新手, 也不能受一些不良风格的老程序员影响, 也要坚持学习, 学习好的风格.
怎么学? 多看看国外开源的大项目的代码, 先看风格, 然后尝试理解, 最后基本上就能通吃一般的开源项目, 终点就是自己也能写出那么牛的像似浑然天成一样的代码...
hhsuc
2011-05-16
打赏
举报
回复
我咋就木有考虑过这种问题呢?面壁去了
emptyness
2011-05-16
打赏
举报
回复
个人觉得用stl和用char *这种事情不能强求, 强求一定用stl 也并不符合C++风格.
倒是有一点, 接口部分 尽量少用stl, 大家都知道api的接口都是char *, 连接口 都是string,只会搞得自寻烦恼.
大概总结就是模块内部尽量stl,boost,模块间 尽量C风格吧.
加载更多回复(145)
GCC for Win32开发环境介绍(DOC)
第三节 人在曹营心在汉的Cygwin 第四节 脚踏两只船的Djgpp 第二章 GCC的外衣——IDE环境 第一节 IDE for GCC概览 第二节 最专一的Dev-
C++
第三节 最脸熟的Visual-MinGW 第四节 最新颖的Code::Blocks 第三章 ...
Dev-
C++
非官方中文入门教程
Dev-
C++
非官方中文入门教程前言本教程仅仅是为了C语言入门者(暂时不涉及
C++
),并且假设我的读者只有中学文化。我将近可能少用术语,让你轻松理解。C很灵活,有时候用A、B两种方法都可达到目的,但我要告诉你用A...
一学就会——vim高级教程为c、
c++
量身定制vim
专门为c/
c++
语言量身定制了vim,安装各种各样的插件,提高编写代码的效率。 安装插件只需要执行一个命令即可,简单方便,快速上升。 插件装完后,熟悉各种各样插件的用法即可——包你一学就会。 注意:该教程仅适用...
Dev-
C++
非官方中文入门教程 收藏
Dev-
C++
非官方中文入门教程 收藏 Dev-
C++
非官方中文入门教程 前言 本教程仅仅是为了C语言入门者(暂时不涉及
C++
),并且假设我的读者只有中学文化。我将近可能少用术语,让你轻松理解。C很灵活,有时候用A、B...
百度2016实习生面经(三面)
终于体会到了心在曹营身在汉的感觉。五一过后,便返回学校了。返回学校之后,便是疯狂的刷题,复习以前的知识。数据结构、操作系统、计算机网络、linux、
C++
等。唉,复习的想吐了,都有想撕书的冲动了。终于,这艰难...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章