码迷,mamicode.com
首页 > 编程语言 > 详细

c++11笔记

时间:2016-04-22 16:46:54      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:笔记   c++11   

constexpr        :会在编译期计算出来
lambda:
是98、03版带有operator()的局部仿函数
当创建lambda函数的时候,编译器内部会生成这样一个仿函数,并从其你作用域中取得参数传递给lambda函数
#############################################################################################
__func__        :只能在函数内部使用,参数不行
#pragma once = _Pragma("once")
区别是,一个是宏,一个是操作符(预编译期也可使用)
#define PR(...) printf(__VA_ARGS__)
__LINE__,__FILE__只在宏函数中起作用,在普通函数中不起作用
__cplusplus 宏已定义成一个具体数字,比如:201103L
long long : printf 时 lld llu
编译期:static_assert()
noexcept()        默认noexcept(true),没有声明noexcept的函数,都是默认声明noexcept(true) 的
成员在定义时就初始化,相当于加在构造函数退出前初始化
sizeof 可以计算类的非静态成员了
friend 可以省去class关键字,也可以应用于被 typedef 过的别名了,也可以应用于模板参数
final:使用virtual接口无法子类重写
override 是必须重写
模板默认参数:
template<typename T = int >
    class Test{};
    
函数模板默认参数的位置不受限制,模板类默认参数参照函数的默认参数的规则
外部模板:作用参考extern 一个变量,用法也一样,即声明到一个头文件中
extern template void test<int>();
#############################################################################################
类继承时,子类想使用可以using ,这种做法叫透传,透传也可以用在子类的构造函数上,而且只用一个using就可以
透传多个重载的构造函数
构造函数可能调用其他重载的构造函数:这种做法叫委派,这时的委派构造函数就相当于一个普通函数
test(int i)
try:m_i(i)
{
}
catch(...)
{}
右值:不可取地址,不可赋值
改变生存期
移动
转发:引用折叠(有规则)
在类方面,多了移动构造函数和移动赋值函数
{}初始化一切都可以了
POD:兼容C,
bool operator ""_C()
inline namespace
using 模板别名:using aa=vector<int>
#############################################################################################
改进>
auto
decltype 使用于范型,decltype有推导规则
decltype 会使const 或 valotile 失效
追踪函数的返回类型:->type
for(auto e:...)        /// 不修改元素内容
for(auto& e:...)    /// 修改元素内容
for(const auto& e:...)    gcc 编译也没错
#############################################################################################
enum class Type{}:强类型枚举值(不允许隐匿转换)
delete [] nullptr:ok
unique_ptr,shared_ptr参见参考右值特性来使用,weak_ptr,只有引用但没有计数,与shared_ptr合用
#############################################################################################
编译时常量:constexpr
变长模板:
template <typename ... element> class tuple;
element:模板参数包
实现:递归继承(模板类继承),有三个步骤
1,普通变长模板声明
2,递归定义
3,递归结束:
template<>
    已定义的模板类名字
    {
        用于继承的数据成员
    }
变长模板函数的话,内部也要递归实现
sizeof...(),计算变长参数个数
多线程
cstdlib:atexit    (C的退出注册函数)
c++11,at_quick_exit,at_exit
#############################################################################################
默认函数操作符
operator,
operator&
operator&&
operator*
operator->
operator->*
operator new
operator delete
声明了构造函数,导致非POD
=default
=deleted
lambda:    // 默认是一个const 函数
[]()mutable->return-type
{}
[var]
[=]
[&var]
[&]
by_ref_lambda        ref;
by_val_lambda        const;
alignof,alginas

c++11笔记

标签:笔记   c++11   

原文地址:http://hakuyo.blog.51cto.com/6207832/1766681

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!