__cdecl 是 C/C++ 默认的调用约定,在 __cdecl 调用约定下,参数从右往左入栈,由调用方负责清理堆栈;在__stdcall 调用约定下,函数参数从右向左压入堆栈中,函数堆栈的清除工作由被调用方负责。这些关键字主要用于跨语言调用,以确保参数传递和堆栈清理的一致性。 (10)重载类的delete运算符,delete的时候会发生什么...
而静态多态则是通过函数重载(函数名相同,参数不同,两个函数在同一作用域),运算符重载,和重定义(又叫隐藏,指的是在继承关系中,子类实现了一个和父类名字一样的函数,(只关注函数名,和参数与返回值无关)这样的话子类的函数就把父类的同名函数隐藏了。隐藏只与函数名有关,与参数没有关系.)来实现的。 优点:加...
栈在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。 当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就...
结构体A中有3个short类型变量,各自以2字节对齐,结构体对齐参数按默认的8字节对齐,则a1,a2,a3都取2字节对齐,sizeof(A)为6,也是2的倍数;结构体B中a1为4字节,a2为2字节,默认对齐参数是8,a1取4字节对齐,a2取2字节对齐,结构体大小为6字节,6不为4的整数倍,补空字节增到8,符合,所以sizeof(B)为8. CPU的...
内联函数同宏函数一样将在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度。 内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会。 在类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量,宏...
概念:以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 特性 inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜 使用作为内联函数 ...
内联函数同宏函数一样将在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度。 内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会。 在类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量,宏...
(46) C++的调用惯例(简单一点C++函数调用的压栈过程) (47) C++的四种强制转换 (48)string的底层实现 (49)一个函数或者可执行文件的生成过程或者编译过程是怎样的 (50)set,map和vector的插入复杂度 (51)定义和声明的区别 (52)typdef和define区别 (53)被free回收的内存是立即返还给操作系统吗?为什么 (54)引用...
20.线程之间的通信方式有哪些? 21.介绍一下socket中的多路复用,及其他们的优缺点,epoll的水平和边缘触发模式 24.类的生命周期 25.父类的构造函数和析构函数是否能为虚函数?这样操作导致的结果? 26.多线程为什么会发生死锁,死锁是什么?死锁产生的条件,如何解决死锁? 27.描述一下面向过程和面向对象 28.C++中左值...
内联函数同宏函数一样将在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度。 内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会。 在类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量,宏...