V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zeal7s  ›  全部回复第 4 页 / 共 12 页
回复总数  225
1  2  3  4  5  6  7  8  9  10 ... 12  
反馈一个小问题,app 里找不到切换 app 语言的按钮,只能跟随系统设置
2023-05-03 12:04:40 +08:00
回复了 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
2023-03-09 16:00:20 +08:00
回复了 kevin1452 创建的主题 游戏 有没有适合地铁上玩的小游戏推荐
元气骑士,战魂铭人
2023-02-23 10:57:30 +08:00
回复了 MajestySolor 创建的主题 Windows win11 的这套 winui3 设计规范有多少软件跟进了?
求壁纸,可否发个链接
2023-02-11 08:41:44 +08:00
回复了 KaynW 创建的主题 iPhone 尼康 Z7ii 对比 iPhone14Pro 拍照能一眼拉开很大差距吗
@tangler 看不了,403 forbidden
2023-02-02 10:19:10 +08:00
回复了 kblacksheep 创建的主题 Apple 想买个米兰尼斯表带,有必要入官方的嘛
@ThirdFlame 没找到啊,确定没有打错第二个字
2023-01-23 11:16:59 +08:00
回复了 Apple2023 创建的主题 Apple 经过对比,高德地图已经远远超越百度地图
我是因为可莉语音包选择用高德
2023-01-08 10:08:25 +08:00
回复了 MMMMMMMMMMMMMMMM 创建的主题 程序员 我的预感未来前端趋势应该是 webgl 之类的东西
btw, 现在出了更新的技术,叫 webgpu ,性能比 webgl 更好
2022-12-15 10:35:30 +08:00
回复了 Features 创建的主题 哔哩哔哩 Bilibili 为了 KPI 真是脸都不要了
@zhaorunze 赞同,小窗挺好的,不觉得这纯粹是为了 KPI 而做出的改变
2022-12-04 23:01:41 +08:00
回复了 Genshin2020 创建的主题 生活方式 请留下未来你会分享给自己孩子的动漫,仅限动漫
叛逆的鲁鲁修
机动战士高达 OO
赛博朋克边缘行者
JoJo 的奇妙冒险 1 - 6 部
灌篮高手
名侦探柯南
EVA
一拳超人
2022-12-01 10:29:11 +08:00
回复了 jancing 创建的主题 C++ 学了 C++去写什么有意思的应用呢?
搞搞图形学,先从最简单的软渲染入手
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2389 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 16:05 · PVG 00:05 · LAX 08:05 · JFK 11:05
Developed with CodeLauncher
♥ Do have faith in what you're doing.