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

最低0.47元/天 解锁文章
6250

被折叠的 条评论
为什么被折叠?



