阅读视图

发现新文章,点击刷新页面。

寒来暑往,感恩相伴丨那些与生物、地理同行的时光

寒来暑往,春华秋实。转眼间,生物与地理课程已然悄然落幕。随着生地会考的到来,才惊觉这段充满探索与收获的学习旅程已悄然画上句号。回首这段学习时光,仿佛一幅绚丽多彩的画卷在眼前徐徐展开,每一笔每一划都承载着知识的沉淀与成长的足迹,而其中最温暖的底色,是吴老师和宋老师两位老师悉心教导的身影。

Add Alexa to Your Car for Just $15 Today

You can now add the convenience of Amazon’s Alexa to your cars at the lowest price ever, as long as you have Amazon Prime. This hands-free device, which usually costs between $35 and $55, is now being sold for just $15 on Amazon. That’s a great deal and a worthwhile price if you've been wanting to add Alexa to your car.

原来夏天真的可以不用空调

最近一周是英国的高温天气,每日通勤都是煎熬,晚上也久久难以入眠。

午饭时聊起英国人不喜欢空调,忽然意识到,我目前工作的这栋建筑在夏天不闷热也不寒冷,但没有空调制冷的那种不适感。

查阅资料发现,这栋由 Make Architects 设计、李嘉诚基金会等资助的建筑,在办公区域确实未安装传统中央空调

取而代之的是一套被动式冷却与通风系统。

建造时挖掘了深达 9.5 米的地下室,形成庞大的地下通道网络。室外空气被引入这个地下迷宫,利用深层地下恒定的 12°C 温度进行热交换,空气在混凝土通道中自然冷却后输送至各楼层。

这套可持续通风系统为建筑赢得了 2018 年 RIBA 南部大奖,并在英国建筑研究院环境评估(BREEAM) 中获得 Outstanding 评级。

在传统认知里,应对炎热最直接的手段就是风扇和空调,这栋建筑则让我切身体会到了可持续发展概念下好设计该是什么样的。询问了身边的同事,竟没有人察觉到这栋建筑未使用空调系统,这种「无感」的设计体验令人印象深刻。

它并非用蛮力去「对抗」自然,而是巧妙地「利用」自然自身的规律。这种被动式设计哲学,强调在初始阶段将气候、环境因素纳入考量,通过建筑形态、材料选择和结构创新,最大限度地减少对机械系统的依赖。

在英国乃至全球夏天愈发炎热的今天,这样的建筑不再仅仅是一个「有趣」的案例,更是一种面向未来的必要探索。它证明了,我们可以创造出既舒适健康、又节能环保的室内环境。

七月流火

七月,开启下半年。大脑感觉还是嗡嗡的,不清醒,耳畔还回想着昨天的很多工作。今年以来感觉越来越紧,早上上班时候还是一个活脱脱的人,处于复苏状态,上班期间感觉就被万千头绪的刺穿透,成了一个刺猬,下班时候又像是黏在蜘蛛网上面的一只小虫子一样,怎么飞也飞不动,被各种网给牵拉着。这种感觉很不好,需要尽快的从这种状态里面给剥离出来,需要站在局外看看深处其中的自己。不然整个身心终究会被拖垮,那时候就真的忘乎所以,呜呼哀哉了。

IMG_20250630_173215.jpg

这两天虽然炽热,可天空是真的晴朗,明净的天空,能够给沉甸甸的心带来一条缝,透进一束光,似乎有了几多松弛感。车子上周折腾许久,最终还是没有卖出。挂在瓜子上,报价居然节节降低,一千多,两千多,三点多……什么样的价格都有,终究低于心理预期。于是,周末保养加换传感器658,代年检350,合计1008,齐活,车子又活过来了,继续开。蓝天白云,老神仙,无尽思绪,整理心情。有时候难得糊涂,想都是问题,做才有答案。先去做,做成一堆烂泥,再慢慢地改,一个粗糙的开始,就是最好的开始。车子整理了,嘿,复活,那人呢?七月流火,走你~

理解 C++ 中的 dynamic_cast: 安全的向下转型与向上转型


C++ 中的 dynamic_cast 是什么?

用途

  • 在运行时在多态类型之间安全地进行转换
  • 通常用于将基类指针转换为派生类指针(向下转型)
  • 使用 RTTI(运行时类型识别)进行类型检查

基本语法

Derived* d = dynamic_cast<Derived*>(basePtr);
  • 如果 basePtr 实际指向一个 Derived 对象,则转换成功
  • 否则,返回 nullptr

转换失败的情况

  1. 指针转换: 如果实际对象不是目标类型,则返回 nullptr
  2. 引用转换: 如果失败,会抛出 std::bad_cast 异常

指针向下转型示例

class Entity {
    virtual ~Entity() {}
};

class Player : public Entity {};
class Enemy : public Entity {};

Entity* e = new Enemy;
Player* p = dynamic_cast<Player*>(e);

if (p) {
    // 可以安全使用 p
} else {
    // p 是 nullptr
}

引用向下转型示例

try {
    Entity& e_ref = *new Enemy;
    Player& p_ref = dynamic_cast<Player&>(e_ref);
} catch (const std::bad_cast& ex) {
    // 捕获异常
}

派生类转基类(向上转型)

  • 总是安全的
  • 是隐式进行的,不需要转换语法
  • 不需要使用 dynamic_cast

向上转型示例

class Entity {
    virtual void say() {}
};

class Player : public Entity {
    void jump() {}
};

Player p;
Entity* e = &p;  // 隐式向上转型,安全
e-*gt;say();        // 正确
// e->jump();    // 错误:Entity 中没有 jump()

dynamic_cast 的使用条件

  • 基类必须是多态类(至少有一个 virtual 函数)
  • 只能用于指针或引用
  • 编译器需启用 RTTI(大多数默认启用)

static_castdynamic_cast 比较

特性 static_cast dynamic_cast
编译期检查
运行期安全
失败时可检测 ❌(行为未定义) ✅(返回 nullptr 或抛出异常)
需要虚函数

总结

  • 在处理多态类时,使用 dynamic_cast 进行类型安全的向下转型
  • 对于指针转换,请检查是否为 nullptr;引用转换请使用 try-catch 捕获异常
  • 派生类到基类的转换(向上转型)总是安全的,可隐式进行

C/C++编程

英文:Understanding dynamic_cast in C++: Safe Downcasting Explained

本文一共 372 个汉字, 你数一下对不对.
理解 C++ 中的 dynamic_cast: 安全的向下转型与向上转型. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 理解 C++ 中的 dynamic_cast: 安全的向下转型与向上转型 C++ C++ 学习笔记 程序设计 计算机
The post 理解 C++ 中的 dynamic_cast: 安全的向下转型与向上转型 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  2. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  5. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  6. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  7. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  8. Javascript 中 sleep 函数实现 Javascript 中并没有 built-in 的 sleep 函数支持, 在 async/await/Promise 的支持之前, 我们可以用 busy-waiting 的方式来模拟: 1 2 3...

2025 Honda SUV Lineup Ranked by Reliability

Honda has long been known for building dependable vehicles, and its SUV lineup is no exception. In 2025, the brand continues to offer a range of crossovers and SUVs that deliver strong reliability, practical design, and long-term value, but some models stand out more than others.

在抖音上抢广电有线A套餐

当年今日

理论上广电的有线专属卡A档套餐是有前置条件的,但现在不知道为什么,突然就没有了前置条件,直接放在了抖音上面卖。我也搞不懂为什么广电要把套餐放在抖音上面卖,为什么就不能放在淘宝、京东、拼多多之类?大概是因为他们要制造饥饿营销。因为直播这种东西,被抢的那些货物转瞬即逝,所以根本不由得用户有半分的犹豫,就是因为这种知道不抢就没有,所以非常有可能抢到的东西实际上并不是我们想要的。主播当然会做各种各样的介绍,但那都只是主观选择性地介绍某一些细节性的东西,不会说或者故意不说明白另外那些不利的,于是这就导致了直播说的跟线下营业厅的不一致。

因为在百度贴吧上看到有人说如果不在抖音上先抢名额直接去营业厅,人家不让你办。所以既然我计划好了要办这个套餐,所以我也就只能先下载一个抖音,然后开一个账号,我就是为了这个有线A而开抖音账号,之前我的手机上没有抖音、快手、小红书。注册的时候我就有点意外,抖音居然不可以用微信关联注册,注册进去以后发现理论上可以第三方登录,那里可以选QQ或微信,但实际上依然是不可以用微信关联登录,所以抖音跟微信,到底有什么深仇大恨呢?支付的时候可以用银行卡,也可以用支付宝,但是那里同样没有微信。

几乎可以这么说,我是一个阿里系的人,对阿里相关的各种东西整个操作我都比较熟悉。不仅仅是操作,熟悉他们的界面,他们的东西放哪里,通常我都能找得到,因为用得多。所以使用抖音的时候,我觉得各种不顺手,我简直不知道要去哪里找东西了。设置这个简单的功能在不同地方居然用不同的入口,虽然进去以后东西是一样的。直播在哪里找?直播账号在哪里找?团购在哪里找?这些东西我都得摸索。

注册抖音的第一个晚上我发现广州广电官方的账号的商城里有13个商品,但没有78块钱的有线A套餐。直播的时候我打开直播间的链接,有78块钱的,但是处在一个已抢完的状态,但实际上我第一次进去,虽然显示的是已抢完,但是我依然可以弹出付款界面,我不知道这是不是新用户的特异功能。因为我也就只有在刚注册进去的时候才进入过已抢光商品的购买页面,后来大概十几分钟以后,我也进不去了。直播间主推的是228的有线C套餐。虽然他们没有明讲那是有线C,但实际上那就是有线C,我不知道为什么不直接说出来。主播在那里循环推荐组有线C,于是你看到有线C套餐有时是已抢光,有时又上架了,处在一个不断循环有货无货的状态,但有线A那天晚上我没有见过有货。从百度贴吧的评论看来,理论上这个有线A套餐应该在官方账号的商城里很容易就能买到,但实际上商城里没有,只能在直播间里抢,虽然直播间是日夜都播的。上午8点开播、晚上19点开播。上午8点出头的时候我进去过,有线A套餐处在第1个链接,但是已经是已抢光的状态,所以周五晚上我蹲在那里,等待19点开播,一进去以后我马上点根本没有半丝犹豫。

支付的时候,其实也慢了一点点,但是处在一个待支付的状态,实际上已经锁定名额了,我记得第一天注册抖音的时候,给我的优惠是15块钱,然后是20块钱,到我最终支付的时候,只要我绑定银行卡,就给了我30块钱的优惠,所以我用48块钱就买了78块钱一年的有线A套餐。这属于狗屎运,但这又不完全是运气,因为这有技巧的成分。我知道他们会上架78块钱的有线A套餐,但从直播的情况看来,他们只会在一开播的时候放出一定的名额,所以我也就只能蹲在一开播的时候就进去干。其实我也不确定是不是这样,但是这一次,我摸对了他们的规则。至于抖音的优惠,作为新用户,他们肯定要表示一下,但是这种过上一段时间就加大优惠力度的做法,我以前没有遇到过。抖音在使用过程之中会有各种的坑,比如说有月付的陷阱。陷阱随便就进去了,如果你没看清就会中招了,即便你看清了,也不容易退出。我个人感觉远离抖音就能避免很多不理性消费。

首先是决定了要买有线A,然后注册抖音,接着是费尽心思抢名额。决心不够的人,没办法做成这些。

回归纯血 Ubuntu

书接上回。

本地电脑升级到基于 Ubuntu 24.04 的 elementary OS 8.0 后,php-fpm 8.3 一直无法使用,不管是 AI 还是 bing 搜索一直无法解决。

后来测试了 apache2 使用 php-cli 没问题,使用 php-fpm 和 nginx 一样也是 access deny。

实在无解,退而求其次,就用虚拟机测试了原版 Ubuntu,居然没有一点问题。

所以基本可以肯定是 elementary OS 8.0 的问题了。

下载 Ubuntu 烧录 USB 盘,安装系统,apt install php8.3 php8.3-fpm 一路绿灯顺利搞定。

纯血 ubuntu
纯血 ubuntu

纯血 Ubuntu 这大红大紫的色调看着还有点不习惯,5.9G 的 iso 镜像文件,安装完连播放器都不带的,然后就是原来右上角的菜单栏居然改成了用于切换桌面工作台的,这修改有点出乎意料,这是怕用户用鼠标切换桌面太快了,放这么个角落,那我还不如 alt+tab 呢。

Ubuntu 自带的运用中心,snap 源安装的运用有的会因为缺乏依赖打不开,还是得通过 snap install 命令安装才能自动带上依赖,浪费了我一些时间。

最头疼的是 github,有时候莫名其妙就突然不能访问,设置 git 搞了我许多时间。

总体来说,纯血 Ubuntu 24.04 比我原来用的 Elementary OS 8.0 更省资源,电池都感觉用的久了,也不知道是不是因为装的东西少的原因。

❌