嵌软八股大全7 - C++ 关键字
除了 C 里面常见的一些关键词外,C++ 额外的一些关键词如下所示:
1、变量
1.1、类型
bool | 布尔 | false / true | 1 | 1 |
wchar_t | 宽字符 | - | - | - |
char16_t | 16 位字符 | - | 2 | 2 |
char32_t | 32 位字符 | - | 4 | 4 |
nullptr | 空指针常量 | - | 4 | 8 |
1.2、auto
auto
关键字用于让编译器根据变量初始化的值自动推导变量的类型
发生在编译期,而不是运行时
2、面向对象 (OOP)
Object Oriented Programming
2.1、class 类
面向对象的核心概念,类的实例为对象
2.2、访问修饰符
2.2.1、public 公共的
声明类中的公共成员变量/函数
2.2.2、protected 保护的
声明类中的保护成员变量/函数
2.2.3、private 私有的
声明类中的私有成员变量/函数
2.3、virtual 虚
声明虚函数,多态的实现方法之一
2.4、override 重写
显示声明重写,不写该关键字也可以隐式重写虚函数
2.5、final
修饰类拒绝继承该类,修饰虚函数拒绝重写虚函数
2.6、friend 友元
声明普通函数/成员函数/类为友元单位,友元单位可以该类的私有和保护成员
2.7、this
特殊指针,始终指向调用成员函数的对象本身
注意:不能在静态成员函数中使用 this
指针
2.8、mutable 可变的
表示类中的成员变量可以在 const 成员函数中被修改
2、泛型编程
2.1、template 模板
用于编写可以处理不同类型数据的通用代码
2.2、typename 模板参数类型
用于声明模板参数类型
2.3、常见模板
2.3.1、函数模板
#include <iostream>
template <typename T>
T add(T a, T b)
{
return a + b;
}
int main() {
int x = 1, y = 2;
double a = 1.1, b = 2.2;
std::cout << add(x, y) << std::endl;
std::cout << add(a, b) << std::endl;
return 0;
}
2.3.2、类模板
#include <iostream>
using namespace std;
// 定义模板类
template <typename T>
class MyClass {
public:
MyClass(T value) : value(value) {}
T getValue() const { return value; }
int compare(const T &a, const T &b);
private:
T value;
};
// 模板类成员函数
template <typename T>
int MyClass<T>::compare(const T& a, const T& b)
{
if((a-b)>0)
return 1;
else if((a-b)<0)
return -1;
else
return 0;
}
int main() {
// 模板类初始化
MyClass<int> intObj(5);
MyClass<double> doubleObj(5.5);
cout << intObj.getValue() << " " << intObj.compare(1,2) << endl;
cout << doubleObj.getValue() << " " << doubleObj.compare(3.8,1.6) << endl;
return 0;
}
2.4、lamda 匿名函数
3、异常处理
3.1、try 包含异常
try
用于包含可能引发异常的代码
3.2、throw 抛出异常
throw
用于抛出异常
3.3、catch 捕获异常
catch
用于捕获被抛出的异常
3.4、示例
#include <iostream>
using namespace std;
double division(int a, int b)
{
if(b ** 0)
{
// 抛出异常
throw "Division by zero condition!";
}
return (a/b);
}
int main ()
{
try {
// 如果该段代码执行了异常抛出
cout << division(50, 0) << endl;
// 会被 catch 捕获到,其参数类型必须和抛出的异常信息严格一致
}catch (const char* msg) {
cerr << msg << endl;
}
return 0;
}
5、类型转换
5.1、static_cast 静态类型转换
主要实现以下两个功能
- 基本类型间的转换
- 基类和派生类间的转换
注意以下两点:
- 在编译时执行静态类型转换
- 运行时不会进行类型检查
#include <iostream>
using namespace std;
class Base{
public:
virtual void show(){ cout << "Base" << endl; }
};
class Derived : public Base {
public:
voi
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式软件名企笔/面试真题合集 文章被收录于专栏
欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,同时还整理了嵌入式软件相关的八股知识。专栏内容涵盖C/C++基础、嵌软常见通信协议、ARM、FreeRTOS、Linux OS相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。