V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zeal7s  ›  全部回复第 3 页 / 共 11 页
回复总数  214
1  2  3  4  5  6  7  8  9  10 ... 11  
316 天前
回复了 wuwuta170 创建的主题 Python 你们平时没事的时候都学啥啊
学滑板
325 天前
回复了 adrianchevalier 创建的主题 Apple 大伙儿 vision pro 能做啥(游戏幻想中)
啪啪时候换脸
颜值不错,想试试
328 天前
回复了 gitignore 创建的主题 问与答 我好像没办法快速区分左右🥵
别人跟我说往左转或者往右转,我经常反应慢半拍,有时候还会搞反。但是如果别人用英文跟我说 left 或者 right ,就能超快反应过来。感觉主要是因为左和右长得太像了,left/right 完全不一样。
@jitongxi 请问是游戏行业吗?
341 天前
回复了 zeal7s 创建的主题 路由器 问下软路由使用场景的问题
顺便再问一下哈,我想让 PS5 下载游戏时不走代理,PS5 播放 youtube 视频时候走代理,这种一般要怎么设置呢?
342 天前
回复了 zeal7s 创建的主题 路由器 问下软路由使用场景的问题
@swxk521 感谢,回头我去研究下 passwall
notion
反馈一个小问题,app 里找不到切换 app 语言的按钮,只能跟随系统设置
361 天前
回复了 iorilu 创建的主题 程序员 看了几天 rust, 总结了一句话关于生命周期
啊?没有垃圾回收的语言都有生命周期吧,无非就是需要开发者自己维护,否则就是空异常
试试把键盘按键震动关了再观察一晚上
2023-04-13 10:58:34 +08:00
回复了 Poluk 创建的主题 程序员 分享一点自己在 B 站收藏的“比较有质量”的课程
@focux +1
2023-04-07 07:28:25 +08:00
回复了 cookgo 创建的主题 汽车 各位奶爸们,你们用的啥车当做家庭用车呀?
AMG A45s
2023-03-31 10:40:03 +08:00
回复了 tu7jako 创建的主题 程序员 数据抽象、封装设计
2023-03-30 11:31:38 +08:00
回复了 Symbo1ic 创建的主题 C++ 求助,想获得一些关于 C++学习的建议
@Symbo1ic 比如你的代码里 https://github.com/hundan2015/LunaticRenderer2/blob/master/lunatic_engine/core/LunaticEngine.h#L14

rendering_core_、entity_manager_和 resource_core_在逻辑上由引擎类负责管理销毁最合适,那么它们使用 unique_ptr 就行了。这里不存在共享所有权的情况,用 shared_ptr 就没必要了。
2023-03-30 11:14:13 +08:00
回复了 Symbo1ic 创建的主题 C++ 求助,想获得一些关于 C++学习的建议
@Symbo1ic 还是拿父窗口和子窗口来举例子,父窗口生成子窗口并且用 unique_ptr hold 住子窗口,子窗口生成时拿到指向父窗口的 raw pointer 。只要能保证父窗口的生命周期长于子窗口,即父窗口先于子窗口创建,晚于子窗口销毁,就能保证 raw pointer 不失效。

所有权这块的使用原则就是一个对象逻辑上属于谁,所有权就是谁。现代 C++里面有所有权这个概念而其他语言里这个概念比较模糊的原因是,现代 C++通过 RAII 来控制堆上对象的生命周期。一个类拥有一个对象的所有权就表示这个类在调用自己的析构函数时也负责自动调用这个对象的析构函数。所以写程序时,想清楚堆上的对象由谁来负责销毁在逻辑上最合适,那么所有权也就想清楚了。

换一种情况,如果程序中允许父窗口先于子窗口关闭,那么继续让父窗口通过 unique_ptr 持有子窗口就不合适了,因为父窗口销毁时也会自动调用子窗口的析构函数。此时需要一个窗口管理器来拥有所有的窗口,比如在窗口管理器中可以写:std::vector<std::unique_ptr<Window>> allWindows 。这样只要保证窗口管理器类晚于所有窗口销毁就行了。

可以看看 muduo 这个 C++网络库,作者也有出书介绍,网上也有大量的文章和视频介绍。里面有挺多 unique_ptr 和 shared_ptr 用法。
2023-03-29 10:59:02 +08:00
回复了 Symbo1ic 创建的主题 C++ 求助,想获得一些关于 C++学习的建议
我记得 CppCon 里有好几个演讲专门讲智能指针的使用,很细,也有不少坑,你可以去搜搜
2023-03-29 10:50:16 +08:00
回复了 Symbo1ic 创建的主题 C++ 求助,想获得一些关于 C++学习的建议
shared_ptr 主要是跟所有权相关,一般一个类用拥有一个对象才会使用 shared_ptr ,如果只是 access 一个对象,用 weak_ptr 或者 raw pointer 就可以。

举个例子,父窗口在逻辑上拥有子窗口,那么父窗口类中就用 shared_ptr hold 住子窗口对象。当子窗口需要使用的父窗口的一些函数时,子窗口就通过 weak_ptr 来 access 父窗口对象进而调用父窗口的函数。这样可以避免循环引用。

一般 shared_ptr 和 weak_ptr 配对使用,unique_ptr 和 raw pointer 配对使用,你分别用这两种方法来实现一个双向链表的功能比如插入和删除就能有所体会。

平时写代码能用 unique_ptr/raw_pointer 配对就尽量用,避免 shared_ptr 引用计数的开销。但是有些情况 shared_ptr 仍然不得不用:比如实现 Graph 相关的算法时候,一个节点会被两个以上节点指向,而且也没有明确的所有权概念。

另外,仅在需要操作对象生命周期时使用智能指针作为函数参数,这部分可以看 C++ Core Guidlines ,讲得比较细。

我自己也是感觉很多 C++书籍讲解智能指针的使用时挺模糊的,比如 C++ primer ,看完语法是会了,但是一写代码就感觉不对劲,每次都会自我怀疑这样写到底对不对。

平时学 C++我比较常看 CppCon 演讲,可以学到很多。
B 站推荐两个 Up 主,感觉 C++相关的系列视频讲得挺好的:
https://space.bilibili.com/1292761396
https://space.bilibili.com/263032155
2023-03-10 14:37:48 +08:00
回复了 poporange630 创建的主题 Apple RMBP14 显示电池建议维修
@magic3584 Retina
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3636 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 437ms · UTC 04:28 · PVG 12:28 · LAX 21:28 · JFK 00:28
Developed with CodeLauncher
♥ Do have faith in what you're doing.