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

C++ 秋招查缺补漏

结构体和类的区别

C++ 中 class 和 struct 区别 | 编程指北 (csguide.cn)

C++ 中为了兼容 C 语言而保留了 C 语言的 struct 关键字,并且加以扩充了含义。

在 C 语言中,struct 只能包含成员变量,不能包含成员函数。

而在 C++ 中,struct 类似于 class,既可以包含成员变量,又可以包含成员函数

区别:

  • class 中类中的成员默认都是 private 属性的。
  • 而在 struct 中结构体中的成员默认都是 public 属性的。
  • class 继承默认是 private 继承,而 struct 继承默认是 public 继承。
  • class 可以用于定义模板参数,struct 不能用于定义模板参数。
template <class T>
struct  Person {
public:T age;
};

sizeof 字符串时 要加上末尾的 ‘/0’

sizeof 和 strlen 的区别

sizeof 和 strlen | 编程指北 (csguide.cn)

 strlen 的源码:

size_t strlen(const char *str) {size_t length = 0;while (*str++)++length;return length;
}

strlen 是一个 C 标准库中的函数,用于计算 C 风格字符串(以空字符 '\0' 结尾的字符数组)的长度,即不包括结尾的空字符的字符个数。

sizeof 是一个 C++ 编译期间计算的操作符,用于计算数据类型或对象所占用的字节数。

#include <iostream>int main() {int a = 42;std::cout << "Size of int: " << sizeof(int) << std::endl;    // 输出 int 类型的大小std::cout << "Size of a: " << sizeof(a) << std::endl;        // 输出变量 a 的大小std::cout << "Size of double: " << sizeof(double) << std::endl; // 输出 double 类型的大小
}

数组做参数退化为指针

C/C++中数组做参数退化为指针 | 编程指北 (csguide.cn)

C++中的 const

C++ 中 const 关键字 | 编程指北 (csguide.cn)

const int ,并不是完全不能改变

int main() {const int a = 10;const int* p = &a;int* q  = const_cast<int*>(p);*q = 11;cout << *q;
}//输出 11

但是输出 a 还是 10

计算机真是一门深不可测的学问.....

因为编译器可能会做一些优化!!也就是在你用到 const 变量的地方,编译器可能生成的代码直接就替换为常量的值,而不是访问一遍常量的指令。

所以即使更改了值,也是不起作用的

const int* p; // 指向只读变量的指针

int * const p; //指针本身只读

static

C++ 中 static 关键字 | 编程指北 (csguide.cn)

void foo() {static int count = 0;  // static 修饰局部变量count++;cout << count << endl;
}int main() {foo();  // 输出 1foo();  // 输出 2foo();  // 输出 3return 0;
}

static 修饰局部变量可以使得变量在函数调用结束后不会被销毁,而是一直存在于内存中,下次调用该函数时可以继续使用。

同时,由于 static 修饰的局部变量的作用域仅限于函数内部,所以其他函数无法访问该变量。

static 修饰函数

static 修饰函数可以将函数的作用域限定在当前文件中,使得其他文件无法访问该函数。

同时,由于 static 修饰的函数只能在当前文件中被调用,因此可以避免命名冲突和代码重复定义。


http://www.mrgr.cn/news/46190.html

相关文章:

  • 《西方电子音乐历史》关键词
  • 常用的一些docker-compose命令
  • LLaMA详解
  • 2024年诺贝尔物理学奖为何授予机器学习?
  • excle导入复杂表头:校验表头和数据
  • YOLOv10改进策略【注意力机制篇】| 引入MobileNetv4中的Mobile MQA,提高模型效率
  • 安卓系统属性persist类型prop深入剖析
  • 【11年资深渗透工程师整理】全网最全的网络安全学习路线!_安全渗透入门 学习顺序_渗透工程师学习路线
  • PLC智能网关在智能制造车间中的应用-天拓四方
  • Python酷库之旅-第三方库Pandas(138)
  • 光控资本:突变!超5000只下跌,半日成交近2万亿
  • MySQL五千万大表查询优化实战
  • 一文读懂Spring AOP的工作原理和机制(面试经)
  • 外包干了3年,技术退步太明显了。。。。。
  • 五十三、架构设计经验与技巧(风险管理)
  • 数字化转型实践中TOGAF如何推动企业实现数字化转型从理论到实践的全新路径
  • 图神经网络(GNNs):原理与应用深入解析
  • JAVA无人值守共享娱乐棋牌室系统源码
  • DS1302时钟模块(STM32)
  • Polars DataFrame 行和列选择指南