如果有其他高级语言的开发经验(c#, Java ),再去学 c++开发,那么要注意什么关键地方?

2020-06-08 09:22:46 +08:00
 tctc4869

如果有其他语言的开发经验( c#,Java ),再去学 c++开发,c++相对其他语言,那么要注意什么关键地方?。现在的 c++与以前的 c++有什么不一样的地方么?,对于 c++,我只听说过用它做开发,其中的内存管理会比 java 和 c#要麻烦,要手动管理内存,管理不好会发生内存泄露,手动管理内存也正是 c++的优点。除了这个还有其他的么?

如果做 qt 应用的话,又要注意什么?

2280 次点击
所在节点    程序员
15 条回复
liuguangxuan
2020-06-08 09:35:29 +08:00
珍爱生命,远离 C++。
tctc4869
2020-06-08 09:36:44 +08:00
@liuguangxuan c++很危险么?
u823tg
2020-06-08 09:37:03 +08:00
感觉吧新特性太多,懒得学,c++11 止步我可以肯定看别人写的 c++ 很大几率看不懂。
visonme
2020-06-08 09:47:08 +08:00
内存管理+指针 (各种指针场景)
其它就不是清楚了,大多数工作都在应用层,也是基于 QT,涉及的知识并不多,跟之前用 C#相比没有太大的区别。
gramyang
2020-06-08 09:48:13 +08:00
我也是新手,学的不是 c++而是 rust 。
需要自行处理栈内存分配和堆内存分配,堆内存的 gc,处理函数返回值的传递,函数参数值的所有权以及可变性,结构体域循环引用可能导致的内存泄漏(这里直接用裸指针写要方便的多),自行处理参数类型转换。
暂时就想到这些。
Tony042
2020-06-08 09:59:19 +08:00
@tctc4869 C++三年一标准,每个人常用的 C++特性估计都不一样,有人喜欢 oop,有人喜欢函数式,还有写模板的喜欢 SFINAE,就导致了#3 楼说的,看别人写的 C++大概率看不懂,11 14 17 20 每个版本又都加了很多新特性
xuanbg
2020-06-08 10:05:34 +08:00
其实没啥,就是别忘记释放内存就行了
nightwitch
2020-06-08 10:15:59 +08:00
如果你只写经典 C++并且比较克制的使用 C++新标准的部分特性, 再加上 Qt 完善的基础设施,可能手感和 Java/C#差不多。

如果上面三条条件有一条做不到,难度会陡然上升。
chucongqing
2020-06-08 10:26:38 +08:00
内存释放,指针使用,还有各种宏各种 typedef,更别说模板了。让人头大,心智负担太重了。
augustheart
2020-06-08 10:35:46 +08:00
没啥特别的,主要就是注意自己申请的资源问题。
语法遇到的时候学一下也就是了。
最大的问题可能是你从此需要更多的和底层打交道,以前你是用别人的框架,现在你要自己撸框架。到和底层打交道的时候随便哪块的内容都能抵上 c++几个标准库新增内容之和。
augustheart
2020-06-08 10:40:08 +08:00
你以为学 java 的学 c#学 rust 的甚至学 python 的就真的都把语言特性吃透了?才怪,九成九的人也不过就是用几个框架而已。
nicevar
2020-06-08 10:43:42 +08:00
最主要的就是内存释放, 以前开发的时候有 Java 的同事转过来的, 各种分配内存不释放, 头疼
用 Qt 简单一点,Qt 自己能够维护内部对象, 不太需要你管
paoqi2048
2020-06-08 11:07:23 +08:00
利用好 RAII,处理好智能指针的循环引用,就基本上不用担心内存泄漏问题
across
2020-06-08 11:10:19 +08:00
Java 和 C#深入过也知道内存模型了,其实就是这部分开放给你了····
其他什么奇形怪状的技巧,也不一定用得上,C++11 里面新概念多一点吧。
cz5424
2020-06-08 12:50:32 +08:00
还是指针,内存分配释放问题比较多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/679574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX