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

C++面试题库

1.C++11新特性

1.1 类型推导

  • auto:用于推导变量类型;
  • decltype:用于推导表达式类型;
// 两者均在编译器执行类型推导
auto a = 1;
const int& b = 2;
decltype(b) c = 3;

1.2 左值-右值

  • 左值:可以取地址,放在等式左边的;
  • 右值:不能取地址,不能放在等号左边的;
  • 左值引用:对左值进行引用类型
  • 右值引用:对右值进行引用类型
  • 移动语义:主要用于转移变量的资源所有权,将原始的资源归为己用,原来的变量被销毁
  • 完美转发:std::forward,目标函数和转发函数类型一致
int a = 1; // a是左值
int b = a + 1; // b+1的返回值以及1字符型常量,均为右值
int& c = a; // 左值引用
int&& d = std::move(a); // 通过std:move将左值a转换为右值,从而使用右值引用
std::forward<int&>(a); // 完美转发,a是左值引用类型

1.3 列表初始化

直接对变量使用列表初始化值,包括基本数据类型、数组、STL

float a{10.2};
int b[2] = {1, 2};
std::vector<int> c{1, 3 ,6};

1.4 lambda表达式 && std::function && std::bind

  • lanbda表达式:匿名函数
    auto func = [capture] (params) -> ret { func_body; };
  • std::function:函数对象
  • std::bind:绑定可调用对象和参数
// 1.lamdba表达式,
// []不捕获任何变量;
// [&]引用捕获,捕获外部作用域所有变量,在函数体内当作引用使用;
// [=]值捕获,捕获外部作用域所有变量,在函数内内有个副本使用
// [a]只值捕获a变量,不捕获其它变量
// [this]捕获当前类中的this指针
vector<int> nums{2, 6, 3, 8};
auto sort_nums = [](int a, int b) -> bool {return a > b;}
std::sort(nums.begin(), nums.end(), sort_nums);

// 2.function函数
void print_nums(int a) {
	std::cout << "a: " << a << std::endl;
}

std::function<void(int)> fun = print_nums; // function调用函数对象
fun(12);

// 3.std::bind函数
double callableFunc (double x, double y) {return x/y;}
auto NewCallable = std::bind (callableFunc, std::placeholders::_1,2);  
std::cout << NewCallable (10) << '\n';  // 相当于调用NewCallable(10, 2),因为其中2被绑定

http://www.kler.cn/news/108550.html

相关文章:

  • el-date-picker日期选择器奇怪的问题解决
  • github搜索技巧探索
  • 人工智能与航天技术的融合:未来发展的新趋势
  • 2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序
  • java spring boot 字符串判空
  • 黔院长 | 一文了解五脏的脏象!
  • 【计算机网络】(谢希仁第八版)第二章课后习题答案
  • PHP危险函数
  • Qt之实现支持多选的QCombobox
  • MySQL安装『适用于 CentOS 7』
  • 防止消息丢失与消息重复——Kafka可靠性分析及优化实践
  • 微机原理:汇编语言程序设计
  • 两数之和(C++解法)
  • 【Oracle】Navicat Premium 连接 Oracle的两种方式
  • 分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)
  • Python——新建工程/引入本地库
  • 基于PHP的仓库库存管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 【VR开发】【Unity】【VRTK】1-无代码VRVR开发介绍
  • SQL SELECT TOP, LIMIT, ROWNUM
  • 悟空crm安装搭建 报错[0] RedisException in Redis.php line 56问题处理办法
  • 若依ruoyi-nbcio如何做一个仿钉钉流程设计器的思考
  • SylixOS BSP开发(七)
  • vue源码分析(六)——vnode 和 createElement的使用和作用
  • SQL-正则表达式和约束
  • redis中的io多线程(线程池)
  • SQLSmith: Databend 如何利用随机化测试检测 Bug
  • 广东木模板批发,建筑桥梁工程专用组合木模板
  • Linux 命令|服务器相关
  • 从裸机到嵌入式Linux—为什么所有芯片启动都是汇编语言开始
  • 如何在filters中使用data中数据?