不一定,当这个类有多个基类对象,且基类对象都有虚函数,那么这个类就会有多个指向不同类的虚函数表的指针
一共分为5个区域
堆 heap
栈 stack
全局 / 静态存储区 .bss段和.data段
常量存储区.rodata段
代码区 .text段
结构参考上述内存模型
自由存储区
堆空间使用malloc、free动态分配和释放空间,能分配较大的内存
栈为函数的局部变量分配内存,能分配的内存较小
原因
const_cast
static_cast
reinterpret_cast
reinterpret意为重新解释,即将数据的二进制形式重新解释
可以转化任何内置的数据类型为其它任何数据类型,也可以转化任何指针类型为其他类型,还可以转化内置数据类型为指针,且不考虑类型安全或常量的情况
编译期转换,不是很安全
dynamic_cast
shared_ptr
unique_ptr
weak_ptr
引用计数机制,引用计数存储着几个shared_ptr指向相同的对象,下降至0时自动销毁
具体实现
构造函数
拷贝构造函数
赋值运算符
顶层和底层const概念
static即静态的意思,可以对变量和函数进行修饰
new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数
new在底层调用operator new全局函数来申请空间;
delete在底层通过operator delete全局函数来释放空间;
new的原理
delete的原理
extern "C" void fun(int a, int b);
extern int Gl_VALUE;
告诉编译器应该去验证(函数或变量)在编译期是否就应该是一个常数
作用
区别
左值
具有可寻址的存储单元,并且能由用户改变其值的量
右值
表示即将销毁的临时对象,具有短暂的状态
右值引用
右值引用功能
反射机制
指程序在运行时动态获取对象属性与方法的一种机制
C++反射机制现状
一些可行的方案
懒汉式,用到的时候才会加载,线程不安全,需要加锁;利用了局部静态变量在第一次使用时才初始化的特性
饿汉式,在main函数开始的时候即创建对象,线程安全
用来封装和管理类的创建,实现创建者和调用者的分离解耦
三种类型
上下文切换与性能
并发与并行
同步问题
线权分配问题