当前位置: 首页 > news >正文

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.lryc.cn/news/527652.html

相关文章:

  • 团体程序设计天梯赛-练习集——L1-022 奇偶分家
  • vue项目中,如何获取某一部分的宽高
  • LeetCode - #195 Swift 实现打印文件中的第十行
  • 机试题——最小矩阵宽度
  • 香港维尔利健康科技集团重金投资,内地多地体验中心同步启动
  • ZYNQ-IP-AXI-GPIO
  • Netty的心跳机制怎么实现的?
  • java基础——专题一 《面向对象之前需要掌握的知识》
  • Python 数据清洗与处理常用方法全解析
  • BFS算法的实现(例题)
  • clean code阅读笔记——如何命名?
  • MacOS 如何解决无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件
  • Java并发学习:进程与线程的区别
  • 省市区三级联动
  • springboot 动态配置定时任务
  • 数据结构与算法学习笔记----求组合数
  • Arouter详解・常见面试题
  • 全志开发板 视频输入框架
  • 寒假学web--day10
  • 【全栈】SprintBoot+vue3迷你商城(9)
  • 系统思考—问题分析
  • 系统架构设计师教材:信息系统及信息安全
  • 美国三种主要的个人数据产业模式简析
  • js手撕 | 使用css画一个三角形 使用js修改元素样式 驼峰格式与“-”格式相互转化
  • 每日一道算法题
  • 低代码系统-产品架构案例介绍、明道云(十一)
  • 论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)
  • 利用机器学习创建基于位置的推荐程序
  • 每日一题 429. N 叉树的层序遍历
  • AIP-132 标准方法:List