【一天一个C++小知识】012.C++11常用新特性汇总

1. 关键字及新语法
1.1 auto关键字

  auto并没有让C++成为弱类型语言,也没有弱化变量什么,只是使用auto的时候,编译器根据上下文情况,确定auto变量的真正类型。

  auto在C++14中可以作为函数的返回值,因此auto AddTest(int a, int b)的定义是没问题的。

  auto作为函数返回值时,只能用于定义函数,不能用于声明函数(编译无法通过)。但如果把实现写在头文件中,可以编译通过,因为编译器可以根据函数实现的返回值确定auto的真实类型。如果读者用过inline类成员函数,这个应该很容易明白,此特性与inline类成员函数类似。

1.2 nullptr关键字及用法

  NULL有问题:

//示例代码1.0 http://www.cnblogs.com/feng-sc/p/5710724.html
class Test
{
   
   
public:
    void TestWork(int index)
    {
   
   
        std::cout << "TestWork 1" << std::endl;
    }
    void TestWork(int * index)
    {
   
   
        std::cout << "TestWork 2" << std::endl;
    }
};

int main()
{
   
   
    Test test;
    test.TestWork(NULL);
    test.TestWork(nullptr);
}

  NULL在c++里表示空指针,看到问题了吧,我们调用test.TestWork(NULL),其实期望是调用的是void TestWork(int * index),但结果调用了void TestWork(int index)。但使用nullptr的时候,我们能调用到正确的函数。

1.3 for循环语法
int main()
{
   
   
	vector<int> mvec={
   
   1,2,3,4,5,6};
	for(auto item:mvec)
		cout<<item<<" ";
}
2. STL容器新增
2.1 std:array

  std::array跟数组并没有太大区别,相对于数组,增加了迭代器等函数.

2.2 std:forward_list

  线性表,与list(双向链表)区别在于它是单向链表。我们在学习数据结构的时候都知道,链表在对数据进行插入和删除是比顺序存储的线性表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值