ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++学习喵大人笔记

2021-03-04 23:01:37  阅读:312  来源: 互联网

标签:return 推导 左值 大人 笔记 vector c++ && 模板


推导

用 F=空(*)(整),这样定义函数类型,上次搞错了.
用来编译时推导变量/表达式类型.的限制:1,必须初化.2,不能为函数参数(可为λ函数参数类似模板了).3,不能定义数组.4,不能作非静态成员变量.
cv常/易.不声明为指针/引用时,忽略引用与常易.反之,则保留.推导始终保留引用与常易.更精确.
推导(函数),则为其返回值.如推导(左值),则返回左值引用.

左值与右值

左值:可放=左边/可取&.
右值:只放=右边/不可取&.
纯右值:临时变量/原始字面/非引用返回临时变量/λ.
将亡值:将被移动的值/T&&返回值/移动()返回(都是废物),也叫废物利用.

auto c = move(a); // c是将亡值 
auto d = static_cast<A&&>(a); // d是将亡值 
int a = 4; 
int &&b = a; // error, a是左值 
int &&c = move(a); // ok 
//左值转右值.

移动相当于转移所有权.通过移动构造函数A(A&&)来.

vector<int> return_vector(void){ 
    vector<int> tmp {1,2,3,4,5}; 
    return tmp; 
} 
vector<int> rval_ref = return_vector(); 
//触发返回值优化(RVO)

类模板默认模板参数必须从右往左定义,而函数模板无此限制.
什么聚合类型初化都是折腾.λ[*本],表示捕捉对象,用于多线程.
[[carries_dependency(跳过栅栏)]],[[noreturn(无中)]] ,[[deprecated("可选过时信息")]],[[fallthrough(直降)]],[[nodiscard(不丢)]],[[maybe_unused(可能未用)]]
应用+元组.

    std::string_view stv(str.c_str(), str.size()); 
//串视避免复制.

as_const左值常左值.
访问者模式来扩展类层次结构.
模板替代继承和虚函数;
C++20中的concepts来替代面向对象代码;
variants替代虚函数或模板方法.
后面没啥看头啦.

标签:return,推导,左值,大人,笔记,vector,c++,&&,模板
来源: https://blog.csdn.net/fqbqrr/article/details/114380197

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有