[读书笔记] Inside C++ Object笔记(第5章: 关于ctor/dtor/copy-ctor/op=)

模型算力需求估算 (Billion Parameters,简称B)和训练/推理的计算任务复杂度,结合硬件计算能力(例如每秒浮点运算次数,FLOPS)来估算。以下是详细的方法和公式说明,以及实际的计算示例。算力需求的估算依赖于参数量、模型架构及硬件性能,结合训练/推理场景的特定要求来计算。通过上述公式和示例,我们可以定量分析不同任务的算力需求,并合理配置硬件资源以优化运行效率。结论:推理任务相对较轻,单台H100可以在30秒内完成此任务。推理算力需求一般远低于训练,因为只需要执行前向传播。,可以将训练时间缩短到约。 阅读详情
1. typedef struct
{
    float x, y, z;
} Point;
编译器并不会产生那个trivial的函数(ctor/dtor/copy-ctor/assign-op),因为它会认为它是一个POD数据结构,程序的行为跟C中的一样。
注意,即使我们往里面增加有参数的构造函数,其它函数也不会被编译器构造出来。因为它们都是trivial的。

2. C++并不支持”临时性的定义“。global在C++中被视为完全定义。C和C++的一个差异是,BSS data segment在C++中相对不重要,C++的所有全局对象都被当作“初始化过的数据”来对待。
所以在C++中,未初始化的内置类型变量,都有初始化过的值,实际上,但是在C中,它们初始值很可能是垃圾数据。

3. C++中可以定义和调用一个pure virtual function,不过它只能被静态的调用,不能经由虚拟机制调用。
唯一的例外是pure virtual dtor,class设计者一定得定义它。因为每一个子类的dtor会被编译器扩展,以静态调用的方式调用其"每一个virtual base"和“上一层base class”的dtor。因此,只要缺乏任何一个base class dtor的定义,就会导致链接失败。

4. 在class的ctor的member initialization list中调用该class的一个虚函数,安全码?
就实际而言,将该函数运行于其class‘s data member的初始化行动中,总是安全的。是因为vptr保证能够在member initialization list被扩展之前,由编译器正确设定好。但是在语意上可能不安全,因为这个虚函数可能依赖于一些数据成员。

vptr的初始化操作发生在什么时候?
在base class ctor调用操作之后,但是在程序员提供的代码或是member initialization list中所列的members 初始化操作之前。
注意即使base class初始化代码写在了member initialization list中,它们也是最先进行初始化,然后才是list中其他对象成员的初始化。

5. 继承子类的dtor执行顺序:
1) dtor本身的代码
2)如果class拥有member class objects,而后者拥有dtor,那么它们会以声明顺序相反的顺序被调用;
3)如果object内带一个vptr,则现在被重新设定,指向适当的base class的virtual table
4) base class's dtor 调用
5) virtual base class's dtor调用
当我们在dtor中调用member function时,对象的蜕变会因为vptr的重新设定而受到影响。

【数据集】中国陆地生态系统通量观测网 ChinaFLUX 阅读详情

相关推荐

大模型技术驱动智慧矿山数字化转型

多模态大模型作为AI领域的前沿技术,通过融合视觉、传感器等多源数据,构建了强大的环境理解与决策能力。其核心价值在于打破数据孤岛,实现实时分析与智能响应,特别适用于工业场景中的复杂系统优化。在智慧矿山建设中,该技术通过数字孪生、设备自诊断和智能调度等模块,显著提升了安全生产效率和资源利用率。典型应用包括基于强化学习的采掘路径规划、多层级灾害预警体系构建,以及可自我更新的矿山知识图谱系统,这些创新正在推动传统矿业向数字化、智能化方向转型。

weixin_29061531的博客 222

C++面向对象编程<九>:面向对象-类之间的关系

OOP面向对象:类与类之间的关系,分为三种:Inheritance(继承)、Composition(组合)、Delegation(委托) **基于对象:单一类的封装Composition组合,表示has-a关系看一个栗子,如图此class里有(has-a)deque,常用图来表示类之间的关系。 上面这张图包含一种设计模式:Adapter(适配),含义如下: 已经有deque,但客户需要queu

耗纸的博客 974

基于51单片机的智能花盆灌溉系统设计与实现

本文详细介绍了基于51单片机的智能花盆灌溉系统设计与实现,通过DS18B20温度传感器、土壤湿度传感器和LCD1602显示屏等硬件模块,结合精确的算法控制,实现自动监测与灌溉。系统解决了传统灌溉依赖定时器、缺乏可视化界面的问题,适合上班族、园艺爱好者和植物园工作人员使用,有效提升植物养护效率。

honey的博客 1014

c++三大函数:拷贝构造(copy ctor)、拷贝赋值(copy op)、析构函数(dtor)

Class的两个经典分类 Class without pointer member(s) complex Class with pointer member(s) string String class 以下为头文件string.h内容 #ifndef _MYSTRING_ #define _MYSTRING_ //类中进行字符串的构造 class String { ... }; //谨记切勿忘分号 //字符串所具备的功能 String::function(...) ... Global-functi

一个搬运知识的笨小孩 2740

单相全桥逆变器中比例谐振(PR)控制的优化设计与实现

本文深入探讨了比例谐振(PR)控制在单相全桥逆变器中的优化设计与实现。通过对比PID控制,详细阐述了PR控制在50Hz基波频率处实现无静差跟踪和强抗干扰性的原理。文章提供了从理论建模、参数整定(Kp, Kr, ωc)到仿真验证的完整实战流程,并介绍了准比例谐振(QPR)控制以增强频率鲁棒性,以及多谐振点设计以抑制特定谐波等进阶优化方法,最终实现THD从3%降至1%以内的显著性能提升。

weixin_29056781的博客 176

10、现代统计方法:趋势面分析、薄板样条与广义线性模型

本文系统介绍了空间预测建模中的三种现代统计方法:趋势面分析(TSA)、薄板样条(TPS)和广义线性模型(GLM)。详细阐述了每种方法的原理、实现步骤、参数优化与预测评估,并结合R语言代码示例展示了在实际数据中的应用。文章还提供了方法对比流程图与土壤湿度预测案例,帮助读者根据数据特征选择合适模型,提升空间预测的准确性与可靠性。

play7的博客 157

在 Lua 中实现面向对象

在 pil 中,lua 的作者推荐了一种方案来实现 OO,比较简洁,但是我依然觉得有些繁琐。这里给出一种更漂亮一点的解决方案:为了贴代码和修改方便,我把它贴在了 wiki 上。Lua 中实现面向对象在这个方案中,只定义了一个函数 class(super) ,用这个函数,我们就可以方便的在 lua 中定义类:base_type=class() -- 定义一个基类 base_typefun...

liwy_finder的博客 372

英伟达 DGX Spark & Reachy Mini 入门教程(一)

英伟达在2026年CES上发布多款开放模型,包括Nemotron推理LLM、Isaac GR00T VLA和Cosmos世界模型,助力开发者构建个性化AI代理。文章详细介绍了如何通过DGXSpark和Reachy Mini机器人打造办公助手,涵盖材料准备(推理/视觉模型、文本转语音服务)、智能体构建(NeMo Agent Toolkit框架)、工具调用和路由策略实现。系统支持本地/云端部署,提供语音交互、视觉识别和动作执行功能,并保持完全开源可定制。最后给出运行演示的终端配置步骤和测试用例,鼓励开发者在此基

2506_90492529的博客 2713

copy ctor、copy assignment(拷贝构造函数和拷贝赋值函数)

这个很早就搞明白了,只是这里系统整理一下。 例1: 例2: #include<iostream> #include<functional> #include<numeric> using namespace std; // TEMPLATE STRUCT plus template<class _Ty = void> struct my_plus { // functor for operator+ typedef _Ty first_argument_

ShenHang_的博客 1635

OpenStack ussuri 私有云平台搭建企业级实战

openstack是一个云操作系统,这个操作系统控制着数据中心中的计算,存储和网络资源。所有这些资源的管理都是通过API来来实现的,并且管理资源都有相应的认证机制。在openstack中有一个叫做dashboard的仪表盘,这个仪表盘通过web界面可以管理这些在DC中的资源。除了能提供IaaS功能外,你还可以使用orchestration,错误管理和服务管理等服务来确保应用的高可用性。

悦分享 2338

2022中山大学计算机技术专硕考研初试、复试经验帖

个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧。可以帮助节省时间! 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 机试 笔试 面试 关于选导师 个人感言

zik的博客 1万+

C++08 copy ctor

拷贝构造 在C++初始化一个变量 = 和()等价 就像 Howmany h2(10) 等价于 Howmany h2 = 10; 拷贝构造: 如果有一个构造函数,这个构造函数它的参数是自己那个class的一个 const reference, 这个构造函数就可以在做这种类型的初始化的时候被调用。(就是初始化这个对象的时候,用另外一个这个class的对象来初始化) 上面这样写是正确的,意味着在传参数过程中不会发生拷贝构造,因为并没有在这个函数里面制造出一个新的对象出来。只是把外面那个对象的refe

m0_46266264的博客 264

Codex 100个真实案例 - 用AI生成Blender 3D建模脚本(建模师要失业了?)

本案例将展示如何用 Codex 生成 Blender Python API(bpy)脚本,自动创建完整的 3D 模型。我们将从基础几何体开始,逐步实现布尔运算、材质设置、光照配置,最终完成一张精美桌子的 3D 建模——包括桌面、桌腿、倒角、木纹材质。还会实现参数化批量生成不同风格的桌子、渲染输出 PNG 图片、以及 360 度旋转动画。全程用自然语言驱动 Codex,让建模从"点鼠标"变成"说人话"!

yueyeguzhuo的专栏 631

Item 8 异常安全的ctor和dtor

根据下面的声明,写出实现的代码,要求达到异常安全或异常中立。这意味着即使发生了异常,Stack对象也要处于正确统一的状态。异常要被传递给调用者,让调用者根据上下文处理异常。template class Stack {public: Stack(); ~Stack(); /*...*/private: T* v_; // 栈的缓冲区 size

八戒的专栏 1642

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ctor/dtor 与线程安全

ctor/dtor 与线程安全 当一个对象能被多个线程同时看到,那么对象的销毁时机就会变得模糊不清,可能出现多种竞态条件: 在即将析构一个对象时,从何而知是否有另外的线程正在执行该对象的成员函数? 如何保证在执行成员函数期间,对象不会在另一个线程被析构? 在调用某个对象的成员函数之前,如何得知这个对象还活着? 现在以 shared_ptr 一劳永逸地解决这些问题 线程安全的定义 依据《Java 并发编程实践》/《Java Concurrency in&nbsp

qq_41105501的博客 1252

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

侯捷 C++面向对象编程笔记——6 带指针的类:三大函数

编译器默认的拷贝构造赋值(一个bit一个bit的复制),编译器默认的只是拷贝了指针(浅拷贝),而不是指针指向的数据。编译器默认的拷贝构造赋值(一个bit一个bit的复制),编译器默认的只是拷贝了指针(浅拷贝),而不是指针指向的数据。alias(别名)和 memory leak(内存泄漏)都是十分危险的。alias(别名)和 memory leak(内存泄漏)都是十分危险的。了后,会使第三步出现问题## 6 带指针的类:三大函数。例:这里结束会调用三次 dtor。例:这里结束会调用三次 dtor。

PLUS_WAVE的博客 266

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++中的trivial和non-trivial构造/析构/拷贝/赋值函数及POD类型

POD 属性在 C++11 中往往又是构建其他 C++ 概念的基础,事实上,在 C++11 标准中,POD 出现的概率相当高。因此学习 C++,尤其是在 C++11 中,了解 POD 的概念是非常必要的。,也就是说有意义的函数,里面由一些必要的操作,比如类成员的初始化、释放内存等。POD 在 C++ 中是非常重要的一个概念,通常用于说明一个类型的属性,尤其是用户自定义类型的属性。一旦定义了构造函数,即使构造函数不包含参数,函数体里也没有任何的代码,那么该构造函数也不再是"平凡"的。

陌养的编程之路 544

Lua仿C++面向对象实现(LuaOO)

该实现的特性 支持类似C++的 new() 和 delete() 函数 构造(ctor)和析构(dtor)函数会自动按C++顺序调用(ctor从最底层基类开始调用,dtor从高上层派生类调用) 派生类中可以访问被覆盖的子类方法 实现代码 function class(super) local cls = {} if super then setm...

程书画的 BLOG 1080

C++ 知道禁用 copy-ctor/assign operator 是 C++ 程序员的试金石

陈硕优快云博客 :知道禁用 copy-ctor/assign operator 是 C++ 程序员的试金石 vgxpm的专栏 : 对其进行了解释,详细阅读 陈硕github/muduo : Singleton.h 的实现中对其对copy-ctor/assign operator进行禁用,利用继承noncopyable,代码: class Singleton : boost::noncopyable

时空矩阵 1758

C++之实现禁用 copy-ctor/assign operator

知道禁用 copy-ctor/assign operator 是 C++ 程序员的试金石。在看到一个开源项目时,先查看其 RAII handle class 是否禁用了 copy-ctor/assign operator(例如 Thread、Mutex、CondVar、Connection),如果没有,对其第一印象就很差了。     进行类体设计时,会发现某个类的对象是独一无二的,没有完全相同的

vgxpm的专栏 3163

C++基本功和 Design Pattern系列 ctor & dtor

最近实在是太忙了,无工夫写呀。只能慢慢来了。呵呵,今天Aear讲的是class.ctor 也就是constructor, 和  class.dtor, destructor. 相信大家都知道constructor 和 destructor是做什么用的,基本功能我就不废话了。下面先说效率的问题,让我们看个简单的例子:class SomeClass;   // forward declaratio

杨德龙的专栏 1万+

深度探索c++对象模型(5):ctor、dtor、copy

一、无继承的对象构造: 类中包含的都是POD,则该类的ctor、dtor、copy都是trivial,初始化、拷贝、回收该类型对象,编译器不会产生对应的ctor、dtor、copy。 二、加入虚函数: 由于构造函数需要初始化vptr,因此ctor、copy是nontrivial,dtor是trivial 在一个类B中使用了其他类A,并且该类有ctor、dtor、copy,则B的ctor、dtor、copy都是nontrivial。 三、虚拟继承: 由最底层的class对Point进行初始化 四、vpt

ehuangdan5864的博客 6663

Item 12 注意copy ctor和赋值函数

如果一个类有自定义的copy ctor和赋值函数,那么: ● 在向其添加成员变量的时候,也要向其所有的ctor和赋值函数添加变量的初始化 ● 派生的时候,也要调用基类相关的函数:class PriorityCustomer: public Customer { public: ... PriorityCustomer(const PriorityCustomer& rhs); PriorityCustomer& operator=(const PriorityCustomer& rhs);

八戒的专栏 774

C++: Ctor

// A: //    no default ctor//    with copy ctorclass A{public:     explicit A(int)    {}};//B://    no default ctor//    no ctor from int//    with copy ctorclass B: public A{};int main(){        //A ...

weixin_34198762的博客 410

copy constructor和copy assignment operator的区别

拷贝构造函数(copy constructor)被用来以一个对象来初始化同类型的另一个对象,拷贝赋值运算符(copy assignmentoperator)被用来将一个对象中的值拷贝到同类型的另一个对象中: class Widget { public:  Widget(); // default constructor  Widget(const Widget&amp; r...

晚晴小筑 377
上一篇: [Effective WX] wx的UI UnitTest explained
下一篇: [读书笔记] Inside C++ Object笔记(第4章: Function语意学)
zero_lee
博客等级 码龄21年 94粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值