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

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; // 1
	return 0;
}


http://www.kler.cn/a/520752.html

相关文章:

  • MacOS安装Docker battery-historian
  • 思科交换机telnet配置案例
  • Rust 智能指针
  • JavaScript赋能智能网页设计
  • 上海亚商投顾:沪指冲高回落 大金融板块全天强势 上海亚商投
  • 使用云服务器自建Zotero同步的WebDAV服务教程
  • 从规则到神经网络:机器翻译技术的演进与未来展望
  • Golang 执行流程分析
  • 「 机器人 」扑翼飞行器的偏航力矩控制:分周期参数调节机制
  • 【SpringMVC】——Json数据交互处理
  • Leetcode::3432. 统计元素和差值为偶数的分区方案
  • 数据库、数据仓库、数据湖有什么不同
  • redis 实践与扩展
  • 【论文复现】一种改进哈里斯鹰优化算法用于连续和离散优化问题
  • SSM开发(三) spring与mybatis整合(含完整运行demo源码)
  • STM32 OLED屏配置
  • 新电脑第一次开机激活
  • 基于OpenCV实现的答题卡自动判卷系统
  • 【机器学习】深入探索SVM:支持向量机的原理与应用
  • 三角形的最大周长(LeetCode 976)
  • 项目测试之Jmeter
  • 第27篇 基于ARM A9处理器用C语言实现中断<三>
  • 配电自动化系统“三区四层”数字化架构
  • HTML<hgroup>标签
  • 【HuggingFace项目】:Open-R1 - DeepSeek-R1 大模型开源复现计划
  • Crawl4AI 人工智能自动采集数据