c++小知识点

  • 抽象类包含至少一个纯虚函数,不能实例化对象。
  • 派生类必须实现基类的所有纯虚函数才能成为非抽象类,从而可以实例化对象。
  • 可以使用抽象类的指针或引用指向派生类对象,实现多态性调用。
  • 抽象类虽然不能直接实例化,但可以拥有构造函数,用于初始化其成员变量。
  • 派生类在构造时可以通过成员初始化列表调用基类的构造函数,完成基类成员变量的初始化。
  • 构造函数不能是虚函数,因为在对象构造过程中虚函数调用机制无法正常工作。
  • 析构函数可以是虚析构函数,当通过基类指针删除派生类对象时,虚析构函数能确保派生类和基类的析构函数都被正确调用,避免资源泄漏。

 * 内联能提高函数效率,但并不是所有的函数都定义成内联函数!内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。
 * 如果执行函数体内代码的时间相比于函数调用的开销较大,那么效率的收货会更少!另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。
 * 以下情况不宜用内联:
 *  (1) 如果函数体内的代码比较长,使得内联将导致内存消耗代价比较高。
 *   (2)  如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。

 * 编译器对 inline 函数的处理步骤
 * 将 inline 函数体复制到 inline 函数调用点处;
 * 为所用 inline 函数中的局部变量分配内存空间;
 * 将 inline 函数的的输入参数和返回值映射到调用方法的局部变量空间中;
 * 如果 inline 函数有多个返回点,将其转变为 inline 函数代码块末尾的分支(使用
 * GOTO)。

空类的大小为1字节

#include <iostream>
using namespace std;
class A {};
int main() {cout << sizeof(A) << endl;return 0;
}

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

#include <iostream>using namespace std;class A {
public:A();~A();static int a;static void fun3();void fun();void fun1();
};int main() {cout << sizeof(A) << endl; // 1return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于使用PHP时WordPress排错——“这意味着您在wp-config.php文件中指定的用户名和密码信息不正确”的解决办法

本来是看到一位好友的自己建站&#xff0c;所以突发奇想&#xff0c;在本地装个WordPress玩玩吧&#xff0c;就尝试着装了一下&#xff0c;因为之前电脑上就有MySQL&#xff0c;所以在自己使用PHP建立MySQL时报错了。 最开始是我的php启动mysql时有问题&#xff0c;也就是启动过…

写一个存储“网站”的网站前的分析

要创建一个能够存储自己网站内容的“网站”,通常意味着你希望有一个可以存储网站数据、文件、内容等信息的系统。为了实现这一目标,可以考虑构建一个内容管理系统(CMS),这个系统能够帮助你存储和管理网站上的内容。 图片仅供参考 以下是如何实现一个可以存储自己网站内容…

[STM32 标准库]定时器输出PWM配置流程 PWM模式解析

前言&#xff1a; 本文内容基本来自江协&#xff0c;整理起来方便日后开发使用。MCU&#xff1a;STM32F103C8T6。 一、配置流程 1、开启GPIO&#xff0c;TIM的时钟 /*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //开启TIM2的时钟RCC_APB2PeriphClockC…

Vue.js组件开发-实现对视频预览

在 Vue 中实现视频文件预览 实现步骤 创建 Vue 组件&#xff1a;构建一个 Vue 组件用于处理视频文件的选择和预览。文件选择&#xff1a;添加一个文件输入框&#xff0c;允许用户选择视频文件。读取文件&#xff1a;监听文件选择事件&#xff0c;使用 FileReader API 读取所选…

深入探索 Vue 3 Markdown 编辑器:高级功能与实现

目录 1. 为什么选择 Markdown 编辑器&#xff1f;2. 选择合适的 Markdown 编辑器3. 安装与基本配置安装 配置 Markdown 编辑器代码说明 4. 高级功能实现4.1 实时预览与双向绑定4.2 插入图片和图像上传安装图像上传插件配置图像上传插件 4.3 数学公式支持安装 KaTeX配置 KaTeX 插…

【信息系统项目管理师-选择真题】2015下半年综合知识答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…

KIMI K1.5:用大语言模型扩展强化学习(论文翻译)

文章目录 KIMI K1.5技术报告摘要 1. 引言2. 方法&#xff1a;基于大语言模型的强化学习2.1 强化学习提示集整理2.2 长思维链监督微调2.3 强化学习2.3.1 问题设定2.3.2 策略优化2.3.3 长度惩罚2.3.4 采样策略2.3.5 训练方法的更多细节 2.4 长到短&#xff1a;短思维链模型的上下…

python:taichi 高性能可视化 Demo 展览

安装 pip install taichi taichi-1.7.3-cp39-cp39-win_amd64.whl (83.1 MB) 运行 cmd where ti D:\Python39\Scripts\ti.exe #-- taichi 高性能可视化 Demo 展览 ti gallery [Taichi] version 1.7.3, llvm 15.0.1, commit 5ec301be, win, python 3.9.13********************…

API接口设计模板

API 员工登录接口设计 基本信息 Path&#xff1a; /admin/staff/login **Method&#xff1a;**POST 接口描述&#xff1a; 请求参数 Query 参数名称是否必须示例备注username是admin用户名password是mima密码 返回数据 名称类型是否必须默认值备注其他信息codeinteger必须dat…

电脑无法开机,重装系统后没有驱动且驱动安装失败

电脑无法开机&#xff0c;重装系统后没有驱动且驱动安装失败 前几天电脑突然坏了&#xff0c;电脑卡住后&#xff0c;强制关机&#xff0c;再开机后开机马上就关机。尝试无数次开机后失败&#xff0c;进入BIOS界面&#xff0c;发现已经没有Windows系统了。重新安装系统后&…

2024年度总结——理想的风,吹进现实

2024年悄然过去&#xff0c;留下了太多美好的回忆&#xff0c;不得不感慨一声时间过得真快啊&#xff01;旧年风雪尽&#xff0c;新岁星河明。写下这篇博客&#xff0c;记录我独一无二的2024年。这一年&#xff0c;理想的风终于吹进现实&#xff01; 如果用一句话总结这一年&am…

Juc22_什么是中断、interrupt、isInterrupted、interrupted方法源码解析、如何使用中断标识停止线程

目录 ①. 什么是中断 ②. 源码解读(中断的相关API) ③. 如何使用中断标识停止线程 ①. 什么是中断 ①. 一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,所以,Thread.stop、Thread.suspend、Thread. resume都已经被废弃了 ②. 在Java中没有办法立即停止…

《用DOTS解决实际需求》集锦

去年作者发布了一篇《DOTS-ECS系列课程》&#xff0c;深受同学们的好评&#xff01;前期课程是基于0.51版本录制的&#xff0c;DOTS升级至1.0版本后&#xff0c;同学们纷纷希望能使用DOTS 1.0版本录制实战课程。 今年作者带着DOTS 1.0版本的实战课程回来啦&#xff01;&#x…

HTTP 配置与应用(不同网段)

想做一个自己学习的有关的csdn账号&#xff0c;努力奋斗......会更新我计算机网络实验课程的所有内容&#xff0c;还有其他的学习知识^_^&#xff0c;为自己巩固一下所学知识&#xff0c;下次更新校园网设计。 我是一个萌新小白&#xff0c;有误地方请大家指正&#xff0c;谢谢…

Crawl4AI 人工智能自动采集数据

文章目录 1 使用 Crawl 的步骤2 AI 智能体应用实例3 结语 Crawl是一款免费的开源工具&#xff0c;利用AI技术简化网络爬取和数据提取&#xff0c;提高信息收集与分析的效率。它智能识别网页内容&#xff0c;并将数据转换为易于处理的格式&#xff0c;功能全面且操作简便。 定位…

KVM/ARM——基于ARM虚拟化扩展的VMM

1. 前言 ARM架构为了支持虚拟化做了些扩展&#xff0c;称为虚拟化扩展(Virtualization Extensions)。原先为VT-x创建的KVM(Linux-based Kernel Virtual Machine)适配了ARM体系结构&#xff0c;引入了KVM/ARM (the Linux ARM hypervisor)。KVM/ARM没有在hypervisor中引入复杂的…

CentOS/Linux Python 2.7 离线安装 Requests 库解决离线安装问题。

root@mwcollector1 externalscripts]# cat /etc/os-release NAME=“Kylin Linux Advanced Server” VERSION=“V10 (Sword)” ID=“kylin” VERSION_ID=“V10” PRETTY_NAME=“Kylin Linux Advanced Server V10 (Sword)” ANSI_COLOR=“0;31” 这是我系统的版本,由于是公司内网…

【go语言】数组和切片

一、数组 1.1 什么是数组 数组是一组数&#xff1a;数组需要是相同类型的数据的集合&#xff1b;数组是需要定义大小的&#xff1b;数组一旦定义了大小是不可以改变的。 1.2 数组的声明 数组和其他变量定义没有什么区别&#xff0c;唯一的就是这个是一组数&#xff0c;需要给…

OpenHarmony 5.0.2 Release来了!

版本概述 OpenHarmony 5.0.2 Release版本对标准系统的能力进行持续完善&#xff0c;以快速迭代的方式推出API 14&#xff0c;相比5.0.1 Release版本&#xff0c;重点做出了如下特性新增或增强&#xff1a; 进一步增强ArkUI、图形图像的能力&#xff0c;提供更多组件的高级属性…

node.js 07.npm下包慢的问题与nrm的使用

一.npm下包慢 因为npm i 默认从npm官网服务器进行下包,但是npm官网服务器是海外服务器所以响应很慢. 于是我们通过npm下包的时候通常用淘宝镜像进行下包,下面是切换到淘宝镜像地址下包的操作. 二.nrm的使用 nrm是一个管理切换npm下包地址的工具,可以快速切换下包的地址. 安…