思考一些基本概念(持续更新中)

【自学笔记】Deepseek的基础知识点总览-持续更新 Deepseek是一款功能强大的AI大模型,以其高效的推理能力和丰富的应用场景而受到广泛关注。它不仅能够快速回答日常百科类问题,还能处理复杂的文本生成和推理任务。以上就是对Deepseek知识点的总览。Deepseek以其强大的功能和多样的应用场景,成为了AI领域的佼佼者。希望这份总览能够帮助你更好地了解和使用Deepseek,并顺利分享给他人。提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,自学记录Deepseek的基础知识点总览。 阅读详情

一、构造函数为什么不能为虚函数:

1、所谓虚函数,也就是根据对象的动态类型决定调用哪个函数。  
2、构造函数是在对象完全构造之前运行的,换句话说,运行构造函数前,对象还没有生成,更谈不上动态类型了。 
这样看,构造函数不可能是虚函数。


二、函数模板

函数模板是一种不说明某些参数的数据类型的函数。例如,下面定义了一个可对任何类型变量进行操作(求绝对值)的函数模板:

template <class T> //或写成:template <typename T>
T abs(T val) 
{
    return val<0 ? -val : val;
}

在函数模板被调用时,编译器根据实际参数的类型确定模板参数T的类型,并自动生成一个对应的函数,即模板函数。模板参数的类型不同,生成的模板函数也不同。

三、一个类的实例化对象所占控件

一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小

首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 sizeof运算符对一个类型名操作,得到的是具有该类型实体(对象)的大小。 如果Class A; A obj; 那么sizeof(A)==sizeof(obj)

一个对象的大小大于等于所有非静态成员大小的总和。

为什么是大于等于而不是正好相等呢?超出的部分主要有以下两方面:1)C++对象模型本身对于具有虚函数的类型来说,需要有一个方法为它的实体提供类型信息(RTTI)和虚函数入口,常见的方法是建立一个虚函数入口表,这个表可为相同类型的对象共享,因此对象中需要有一个指向虚函数表的指针,此外,为了支持RTTI,许多编译器都把该类型信息放在虚函数表中。但是,是否必须采用这种实现方法,C++标准没有规定,但是这几户是主流编译器均采用的一种方案。2) 编译器优化 因为对于大多数CPU来说,CPU字长的整数倍操作起来更快,因此对于这些成员加起来如果不够这个整数倍,有可能编译器会插入多余的内容凑足这个整数倍,此外,有时候相邻的成员之间也有可能因为这个目的被插入空白,这个叫做补齐”(padding)所以,C++标准紧紧规定成员的排列按照类定义的顺序,但是不要求在存储器中是紧密排列的。 基于上述两点,可以说用sizeof对类名操作,得到的结果是该类的对象在存储器中所占据的字节大小,由于静态成员变量不在对象中存储,因此这个结果等于各非静态数据成员(不包括成员函数)的总和加上编译器额外增加的字节

示例代码:

class A
{
public:
    static int i;
};
int A::i = 0;
 
int main()
{
    cout << sizeof(A) << endl;//1
    return 1;
}

后者依赖于不同的编译器实现,C++标准对此不做任何保证。 C++标准规定类的大小不为0,空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1。 如果在类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针指向虚函数表VTable,在32位机器上,一个对象会增加4个字节来存储此指针,它是实现面向对象中多态的关键。而虚函数本身和其他成员函数一样,是不占用对象的空间的。 我们来看下面一个例子:(此例子在Visual C++编译器中编译运行)

示例代码

class A { };
class B {
    char ch;
    void func() { }
};
class C {
    char ch1; //占用字节
    char ch2; //占用字节
    virtual void func() { }
};
class D {
    int in;
    virtual void func() { }
};
void main() 
{
    A a;
    B b;
    C c;
    D d;
    cout<<sizeof(a)<<endl;//result=1  
    cout<<sizeof(b)<<endl;//result=1 
    //对象c实际上只有字节有用数据,但是
    //按照上面第二点编译器优化,编译器将
    //此扩展为两个字,即字节,有虚表地址,为其类型大小的整数倍
    cout<<sizeof(c)<<endl;//result=8 
    cout<<sizeof(d)<<endl;//result=8
}

综上所述:

一个类中,虚函数、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的。

对象大小 = sizeof(vptr) + 所有非静态数据成员大小 + Aligin字节大小(依赖于不同的编译器)


sizeof 统计类实例化对象所占内存大小的规则详解 一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。  首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。add charles 空结构体:struct d{} 的sizeof也是1。 具体规则如下: 1:sizeof统计的是内存四区中的堆和栈里面的数据,而不包含数据区和代码区,因... 阅读详情

相关推荐

伺服电机三环控制实战:从参数整定到系统优化

本文以实战视角,深入解析伺服电机三环控制(位置环、速度环、电流环)的参数整定与系统优化全流程。文章摒弃复杂理论,通过生动的比喻和分步调试指南,详细阐述了从电流环快速响应、速度环平滑调节到位置环精准定位的调试方法,并提供了常见问题排查与进阶优化技巧,帮助工程师有效提升伺服系统性能与稳定性。

weixin_29201933的博客 222

C++中定义类的对象:用new和不用new有何区别?

举个简单的例子: class Point { private: int x; int y; public: void Set(int a,int b) { x=a; y=b; } void Print() { cout<<"("<<x<<","<<y<<")"<<endl;

IEEEITU的专栏 1553

别再只会复制Haar级联代码了!OpenCV人脸检测全方案深度解析,从原理到工业级落地

通用预训练模型在你的业务场景效果不好时,用自己的业务数据集训练专属的级联器,是提升精度的终极方案,OpenCV自带和工具,支持自定义Haar/LBP级联器训练。场景首选方案次选方案新手入门学习Haar级联分类器LBP级联分类器嵌入式轻量固定场景LBP级联分类器YuNet轻量版工业级落地项目(99%场景)DNN+YuNetMTCNN多人脸+小目标复杂场景DNN+YuNet自定义微调模型同时做人脸+其他目标检测。

2601_94871597的博客 359

C++成员函数在内存中的存储方式

用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分配存储单元,如下图所示。 能否只用一段空间来存放这个共同的函数代码段,在调用各对象的函数时,都去调用这个公用的函数代码。如下图所示。 显然,这样做会大大节约存储

Hopefully Sky的博客 4万+

类实例化 对象的内存模型 及 内存占用分析

文章目录前言简单类的内存模型理解静态成员属性和方法的特点只有对象才会有内存模型!!成员函数如何获取对象数据??基类与派生类的内存分配派生类继承基类类的内存占用情况分析 前言 下面的工具查看对象的内存模型: 利用VS查看内存模型 简单类的内存模型 首先,明白一个类的组成及其内存模型分布。如下图所示,类的成员中除了普通成员变量之外,其他的均不存储在对象的存储空间中,只存储在静态区。 也就是说,一个类可以实例化n个对象,除了普通成员变量分别存储在n个对象的内存空间中,其他的成员在内存中只有一份。即,一个类的

四库全书的酷 1749

从桌面弹窗到硬件通知:拆解Linux下D-Bus如何成为系统组件的“消息中枢”

本文深入解析Linux系统中D-Bus如何作为核心消息中枢,协调硬件事件、系统服务和桌面环境之间的通信。通过总线架构设计、消息传递机制和服务激活策略,D-Bus实现了高效资源管理和流畅用户体验,成为现代Linux桌面生态不可或缺的组件。

weixin_33743661的博客 302

一个类的实例化对象所占空间的大小?

一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么sizeof(A)的大小和成员的大小总和是什么关系呢,很简单,一个对象的大小大于等于所有

lichunming83的专栏 3835

[思考记录]认知和思考

所以,如果不去结合应用方式和使用场景的思考、不随发展变化重新审视,会很难相对把一个技术用到极致,或做出高品质的产品。即便一个人拥有很好的认知和思考能力,如果不善于表达,那么其的想法就如同被禁锢在密闭的盒子里,难以传递并影响他人。但又不得不承认,那个阶段我们对此的认识和重视程度不够,思考也相对浅显,多数时候可能止于想过,达不到思考清楚并建立有效认知的程度。认知的高度和思考的深度,并没有绝对的上限,是一个持续不断的过程,需要不断去实践、积累、更新并提升。3.认知的高度、思考的深度,是一个持续不断的过程。

:: Dotnet Fantasy :: 1024

服务更新思考

分类 从更新的对象角度看,涉及两个主要方面:一个是程序二进制可执行文件的更新,一个是程序执行时的配置文件的更新。 从更新所造成的可用性影响上看,有冷和热两种两种方式 冷更新:停服务,更新,恢复服务。从流程上看,是有一段时间服务处于不可用状态的,这对于游戏或者一些可用性要求较高的公有服务其实是不可接受的。 热更新:服务正常运行,不需要停服务更新。是提升用户体验的一个非常有效的手段, 小...

消磨时间的博客 568

做一个保持学习和思考的人

     今天有幸拜读了牛人刘未鹏《为什么你应该(从现在开始就)写博客》,很是有感觉。文章中提到的关于价值博客以及让自己成为持续学习和思考的人这两点,极大剖析了写博客的真正价值取向,也深刻让自己感到愧疚。     回想自己近几年来的学习生涯,不禁感伤,感伤自己在学习方面上较匮乏了思考,助长了停止思考问题的惰性。而更多的是跟着别人走,跟着书本走。当然绝大一方面是因为自己涉猎范围很窄,没有花更多时

Kasmile的专栏 1535

LobeChat能否持续学习?在线更新能力探讨

LobeChat本身不具备模型级持续学习能力,但通过RAG、插件系统和提示词工程,可实现知识更新与功能扩展。结合本地模型部署,能构建持续演进的AI助手生态,满足企业对智能体动态成长的需求。

weixin_34456923的博客 839

AutoGPT能否持续学习?模型更新机制探讨

本文探讨AutoGPT是否具备持续学习能力,指出其虽不更新模型参数,但可通过记忆、反馈与任务迭代实现类人的行为演化。分析其推理机制、工具集成与四层架构,揭示其在任务执行中自我优化的闭环逻辑,并讨论实际应用中的价值与风险。

weixin_42506884的博客 802

有关软件源的思考持续更新中)

文章目录有关源的问题 有关源的问题 在开发过程中我们时不时就要的需要跟软件源打交道,不得不说,软件源用的好与不好就成了第七把武器,似有实无

朔望两弦的专栏 360

AI提示词收集(持续更新

文章概念卡片设计师提示词## 核心定位你是一位专业的文章概念卡片设计师,专注于创建既美观又严格遵守尺寸限制的视觉概念卡片。你能智能分析文章内容,提取核心价值,并通过HTML5、TailwindCSS和专业图标库将精华以卡片形式呈现。

啵啵啵啵博客 920

长路个人博客详细文章目录索引(持续更新)

本索引目录会一直不断进行更新…最近更新时间:2022.6.7 16:38物联网:2020后半段时间学习的javaweb学习笔记可见语雀(当时记录在那里就不搬过来了):语雀-Javaweb对应尚硅谷的Spring5学习笔记:语雀-框架/Spring5对应黑马SpringMVC教程学习笔记:语雀-框架/SpringMVC对应黑马SpringMVC教程学习笔记:语雀-框架/MybatisMyBatis插件:...................................................

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 1万+

33、一个类的实例化对象所占空间的大小?

一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体(对象)的大小。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj)。 一个对象的大小大于等于所有非静态成员大小的总和。 为什么是大于等于而不是...

weixin_34037977的博客 150

一个类的实例化对象所占空间的大小

注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么sizeof(A)的大小和成员的大小总和是什么关系呢,很简单,一个对象的大小大于等于所有非静态成员大小的总和。

happylife1527的专栏 495

C++中类对象所占空间的大小

C++中类对象所占空间的大小 http://www.cnblogs.com/easonpan/archive/2012/04/25/2470177.html   首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。    计算一个类对象的大小时的规律: 空类、单一继承的空类

anhkgg的专栏 7796

基于BiLSTM双向长短期记忆神经网络的轴承剩余寿命预测MATLAB完整代码

基于BiLSTM双向长短期记忆神经网络的轴承剩余寿命预测MATLAB完整代码该代码面向工业设备预测性维护领域,特别是旋转机械(如轴承)的剩余使用寿命预测。通过监测轴承振动信号提取特征,利用深度学习模型对轴承退化过程建模,实现早期故障预警与寿命评估。主要功能数据加载与划分:加载重构后的特征数据,划分训练集与测试集。数据标准化:使用训练集的均值和标准差标准化数据。BiLSTM模型训练:构建并训练双向长短期记忆网络模型。剩余寿命预测:对测试集进行RUL预测。性能评估:计算RMSE、MAE、R²等评估指标。可视化分析:生成预测结果对比图、残差分析图、误差分布图、雷达图等。平台:MATLAB(建议R2020b或更新版本)

上一篇: 橡皮筋技术实现之双缓存
下一篇: STL之迭代器的类型介绍
startwithdp
博客等级 码龄16年 52粉丝 51原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值