文章目录
36. 函数调用类型_cedecl,_stdcall,_fastcall
函数调用约定详解
函数调用约定决定了函数调用过程中参数传递和返回值处理的方式。
使用场景:
- 编写库函数时使用,保证库的跨平台兼容性。
- 需要显式控制函数调用堆栈的清理过程。
37. char * const p ,char const * p, char const * const p区别
char * const p
指针常量(Constant Pointer)
指针常量是指指针本身是常量,意味着你不能改变这个指针指向的地址,但可以修改它指向的内容。
- 定义:p 是一个指针常量,指向一个字符类型变量。
- 含义:指针 p 本身是常量,不能改变它的指向。但是,通过指针 p 可以修改它所指向的字符的值
char c1 = 'A';
char c2 = 'B';
char * const p = &c1; // p 是一个常量指针,指向 c1
*p = 'Z'; // 合法,修改 c1 的值
// p = &c2; // 非法,不能改变 p 的指向
char const * p 或 const char * p
常量指针是指指针所指向的内容是常量,意味着你不能通过指针修改所指向的值,但可以改变指针本身指向的位置。
char c1 = 'A';
char c2 = 'B';
const char * p = &c1; // p 是一个指向常量字符的指针
// *p = 'Z'; // 非法,不能修改所指向的字符的值
p = &c2; // 合法,改变 p 的指向
char const * const p 或 const char * const p
char c1 = 'A';
char c2 = 'B';
const char * const p = &c1; // p 是一个常量指针,指向一个常量字符
// *p = 'Z'; // 非法,不能修改所指向的字符的值
// p = &c2; // 非法,不能改变 p 的指向
38. 为什么C++访问虚函数比访问普通函数慢
虚函数和普通函数的区别
- 普通函数调用:编译时已经确定了具体调用哪个函数,直接通过函数地址进行调用。
- 虚函数调用:运行时才确定具体调用哪个函数,通过虚函数表(vtable)进行间接调用。
虚函数调用的机制
普通函数调用的机制
普通函数调用则是通过直接调用函数地址完成的。编译时已经确定了函数的地址,生成的代码可以直接跳转到该地址执行函数。
39. 为什么需要纯虚函数?
纯虚函数在C++中用于定义抽象类,它们提供了一种机制来指定必须在派生类中实现的函数接口。这对于设计面向对象的系统特别有用。
什么是纯虚函数
纯虚函数是没有具体实现的虚函数,在基类中声明,但在派生类中必须被实现。它的语法是在函数声明末尾加上 = 0。
class Base {
public:
virtual void pureVirtualFunction() = 0; // 纯虚函数
};
为什么需要纯虚函数
40. 迭代器和普通指针有什么区别?
迭代器和普通指针都是用于遍历数据结构的工具,但它们在功能和使用场景上有许多不同之处。
迭代器 (Iterator)
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
普通指针 (Pointer)
迭代器与指针的主要区别
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!