V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tctc4869
V2EX  ›  程序员

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

  •  
  •   tctc4869 · 2020-06-08 09:22:46 +08:00 · 2249 次点击
    这是一个创建于 1389 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    如果上面三条条件有一条做不到,难度会陡然上升。
    chucongqing
        9
    chucongqing  
       2020-06-08 10:26:38 +08:00
    内存释放,指针使用,还有各种宏各种 typedef,更别说模板了。让人头大,心智负担太重了。
    augustheart
        10
    augustheart  
       2020-06-08 10:35:46 +08:00 via Android
    没啥特别的,主要就是注意自己申请的资源问题。
    语法遇到的时候学一下也就是了。
    最大的问题可能是你从此需要更多的和底层打交道,以前你是用别人的框架,现在你要自己撸框架。到和底层打交道的时候随便哪块的内容都能抵上 c++几个标准库新增内容之和。
    augustheart
        11
    augustheart  
       2020-06-08 10:40:08 +08:00 via Android
    你以为学 java 的学 c#学 rust 的甚至学 python 的就真的都把语言特性吃透了?才怪,九成九的人也不过就是用几个框架而已。
    nicevar
        12
    nicevar  
       2020-06-08 10:43:42 +08:00
    最主要的就是内存释放, 以前开发的时候有 Java 的同事转过来的, 各种分配内存不释放, 头疼
    用 Qt 简单一点,Qt 自己能够维护内部对象, 不太需要你管
    paoqi2048
        13
    paoqi2048  
       2020-06-08 11:07:23 +08:00
    利用好 RAII,处理好智能指针的循环引用,就基本上不用担心内存泄漏问题
    across
        14
    across  
       2020-06-08 11:10:19 +08:00
    Java 和 C#深入过也知道内存模型了,其实就是这部分开放给你了····
    其他什么奇形怪状的技巧,也不一定用得上,C++11 里面新概念多一点吧。
    cz5424
        15
    cz5424  
       2020-06-08 12:50:32 +08:00 via iPhone
    还是指针,内存分配释放问题比较多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1068 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:12 · PVG 03:12 · LAX 12:12 · JFK 15:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.