![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c++11 随笔
文章平均质量分 85
记录一些c++11的知识
留点头发。
模仿即学习,创造即艺术
展开
-
c++11笔记 11后置返回值类型
在泛型编程中,可能需要通过参数的运算来得到返回值的类型。考虑下面这个场景:template <typename R, typename T, typename U> R add(T t, U u) { return t+u; } int a = 1; float b = 2.0; auto c = add<decltype(a + b)>(a, b);我们并不关心 a+b 的类型是什么,因此,只需要通过 decltype(a+b) 直接得到返回值类型即可。.转载 2021-05-31 17:59:08 · 182 阅读 · 0 评论 -
c++11笔记10 lambda表达式
lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数后,C++11 标准终于引入了 lambda,本节将带领大家系统地学习 lambda 表达式的具体用法。lambda匿名函数的定义定义一个 lambda 匿名函数很简单,可以套用如下的语法格式:[外部变量访问转载 2021-05-31 17:52:01 · 272 阅读 · 0 评论 -
c++11笔记09 auto和decltype区别
通过《C++ auto》和《C++ decltype》两节的学习,相信大家已经掌握了 auto 和 decltype 的语法规则以及使用场景,这节我们将 auto 和 decltype 放在一起,综合对比一下它们的区别,并告诉大家该如何选择。语法格式的区别auto 和 decltype 都是C++11 新增的关键字,都用于自动类型推导,但是它们的语法格式是有区别的,如下所示:auto varname = value; //auto的语法格式decltype(exp) varname [= ..转载 2021-05-31 17:39:56 · 87 阅读 · 0 评论 -
c++11笔记08 使用using代替typedef
大家都知道,在C++中可以通过 typedef 重定义一个类型:typedef unsigned int uint_t;被重定义的类型并不是一个新的类型,仅仅只是原有的类型取了一个新的名字。因此,下面这样将不是合法的函数重载:void func(unsigned int);void func(uint_t); // error: redefinition使用 typedef 重定义类型是很方便的,但它也有一些限制,比如,无法重定义一个模板。想象下面这个场景:typedef st...转载 2021-05-31 14:23:18 · 648 阅读 · 0 评论 -
c++11笔记07 const与constexpr的区别
《C++11 constexpr》一节中,详细讲解了 constexpr 关键字的功能和用法。一些读者在学习过程中,经常会把 const 和 constexpr 搞混,不知道什么时候用 const,什么时候用 constexpr。本节就带领大家对 const 和 constexpr 做系统地区分。我们知道,constexpr 是 C++ 11 标准新添加的关键字,在此之前(C++ 98/03标准)只有 const 关键字,其在实际使用中经常会表现出两种不同的语义。举个例子:#include .转载 2021-05-30 17:03:48 · 136 阅读 · 0 评论 -
c++11笔记06 右值引用
c++ 左值引用与右值引用左值引用先看一下传统的左值引用。int a = 10;int &b = a; // 定义一个左值引用变量b = 20; // 通过左值引用修改引用内存的值左值引用在汇编层面其实和普通的指针是一样的;定义引用变量必须初始化,因为引用其实就是一个别名,需要告诉编译器定义的是谁的引用。int &var = 10;上述代码是无法编译通过的,因为10无法进行取地址操作,无法对一个立即数取地址,因为立即数并没有在内存中存储,而是.转载 2021-05-30 16:46:18 · 158 阅读 · 0 评论 -
c++11笔记-05 多线程std::thread类
c++ 11 之后有了标准的线程库:std::thread。默认构造函数 thread() noexcept; 初始化构造函数 template <class Fn, class... Args> explicit thread(Fn&& fn, Args&&... args); 拷贝构造函数 [deleted] thread(const thread&) = delete; Move 构造函数 thread(转载 2021-05-13 17:41:24 · 348 阅读 · 0 评论 -
c++11笔记-04 const修饰符
简单明了。1.const和指针:如果const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量。char greet[] = “Hello”;char* p = greet;//①greet不能变,即不能通过(*p) = 的方式改变//但仍可通过greet = 的方式改变;指针可指向别处。const char* p = greet;char const * p = greet; //同①char*原创 2020-06-21 20:58:23 · 130 阅读 · 0 评论 -
c++11笔记-03 4种强转的用法解析
看了很多网上的关于4种强转运算符的分析,有些文章写的还是不错的,故在巨人的肩旁上再进行一次自认的理解。因为有些解释自己没怎么明白,于是自己敲一敲代码,加深加深印象,并做一些更简单的解释,希望看到文章的人也能理解。有写错的地方也请指出。参考:https://blog.csdn.net/starryheavens/article/details/4617637//父类class Base{...原创 2020-04-17 22:43:13 · 566 阅读 · 0 评论 -
c++11笔记-02 多态之浅析虚函数表
面试经常遇到的c++基础问题就是多态。下面是一般问多态问题的基本问法:问题1,你知道虚函数吗?答案:实现多态所必须,父类类型的指针指向子类的实例,执行的时候会执行之类中定义的函数。问题2,析构函数可以是虚函数吗?答案: 如果有子类的话,析构函数必须是虚函数。否则析构子类类型的指针时,析构函数有可能不会被调用到。问题3,多态的实现。答案:简而言之编译器根...原创 2020-04-15 21:31:17 · 380 阅读 · 0 评论 -
c++11笔记-01 多继承与多重继承
1.多继承多继承是指一个子类继承多个父类。多继承对父类的个数没有限制,继承方式可以是公共继承、保护继承和私有继承,不写继承方式,默认是private继承多继承举例:#include <iostream>#include <stdlib.h>#include <string>using namespace std;/*** 定义工人...转载 2020-04-13 20:19:09 · 220 阅读 · 0 评论