如果有其他语言的开发经验( c#,Java ),再去学 c++开发,c++相对其他语言,那么要注意什么关键地方?。现在的 c++与以前的 c++有什么不一样的地方么?,对于 c++,我只听说过用它做开发,其中的内存管理会比 java 和 c#要麻烦,要手动管理内存,管理不好会发生内存泄露,手动管理内存也正是 c++的优点。除了这个还有其他的么?
如果做 qt 应用的话,又要注意什么?
1
liuguangxuan 2020-06-08 09:35:29 +08:00 via Android 1
珍爱生命,远离 C++。
|
2
tctc4869 OP @liuguangxuan c++很危险么?
|
3
u823tg 2020-06-08 09:37:03 +08:00 1
感觉吧新特性太多,懒得学,c++11 止步我可以肯定看别人写的 c++ 很大几率看不懂。
|
4
visonme 2020-06-08 09:47:08 +08:00
内存管理+指针 (各种指针场景)
其它就不是清楚了,大多数工作都在应用层,也是基于 QT,涉及的知识并不多,跟之前用 C#相比没有太大的区别。 |
5
gramyang 2020-06-08 09:48:13 +08:00
我也是新手,学的不是 c++而是 rust 。
需要自行处理栈内存分配和堆内存分配,堆内存的 gc,处理函数返回值的传递,函数参数值的所有权以及可变性,结构体域循环引用可能导致的内存泄漏(这里直接用裸指针写要方便的多),自行处理参数类型转换。 暂时就想到这些。 |
6
Tony042 2020-06-08 09:59:19 +08:00
@tctc4869 C++三年一标准,每个人常用的 C++特性估计都不一样,有人喜欢 oop,有人喜欢函数式,还有写模板的喜欢 SFINAE,就导致了#3 楼说的,看别人写的 C++大概率看不懂,11 14 17 20 每个版本又都加了很多新特性
|
7
xuanbg 2020-06-08 10:05:34 +08:00
其实没啥,就是别忘记释放内存就行了
|
8
nightwitch 2020-06-08 10:15:59 +08:00
如果你只写经典 C++并且比较克制的使用 C++新标准的部分特性, 再加上 Qt 完善的基础设施,可能手感和 Java/C#差不多。
如果上面三条条件有一条做不到,难度会陡然上升。 |
9
chucongqing 2020-06-08 10:26:38 +08:00
内存释放,指针使用,还有各种宏各种 typedef,更别说模板了。让人头大,心智负担太重了。
|
10
augustheart 2020-06-08 10:35:46 +08:00 via Android
没啥特别的,主要就是注意自己申请的资源问题。
语法遇到的时候学一下也就是了。 最大的问题可能是你从此需要更多的和底层打交道,以前你是用别人的框架,现在你要自己撸框架。到和底层打交道的时候随便哪块的内容都能抵上 c++几个标准库新增内容之和。 |
11
augustheart 2020-06-08 10:40:08 +08:00 via Android
你以为学 java 的学 c#学 rust 的甚至学 python 的就真的都把语言特性吃透了?才怪,九成九的人也不过就是用几个框架而已。
|
12
nicevar 2020-06-08 10:43:42 +08:00
最主要的就是内存释放, 以前开发的时候有 Java 的同事转过来的, 各种分配内存不释放, 头疼
用 Qt 简单一点,Qt 自己能够维护内部对象, 不太需要你管 |
13
paoqi2048 2020-06-08 11:07:23 +08:00
利用好 RAII,处理好智能指针的循环引用,就基本上不用担心内存泄漏问题
|
14
across 2020-06-08 11:10:19 +08:00
Java 和 C#深入过也知道内存模型了,其实就是这部分开放给你了····
其他什么奇形怪状的技巧,也不一定用得上,C++11 里面新概念多一点吧。 |
15
cz5424 2020-06-08 12:50:32 +08:00 via iPhone
还是指针,内存分配释放问题比较多
|