- 没有自动类型推断,需要显式指定变量类型。
- 没有移动语义和右值引用,导致代码效率不高。
- 没有nullptr关键字,需要使用0或者NULL来表示空指针。
- 头文件和源文件需要手动包含和链接,容易出现重复定义和依赖问题。
- 没有标准库容器的emplace和emplace_back函数,导致构造和插入元素时效率不高。
而C++11针对以上问题进行了一系列的改进和扩展,主要包括以下特性:
- auto和decltype关键字,能够推导变量和表达式的类型。
- 移动语义和右值引用,将右值对象转移所有权,避免了不必要的拷贝和析构。
- nullptr关键字,代替0和NULL,能够更准确地表示空指针。
- 头文件和源文件的自动包含和链接,避免了重复定义和依赖问题。
- 标准库容器的emplace和emplace_back函数,能够直接在容器内构造和插入元素,效率更高。
除此之外,C++11还新增了Lambda表达式、constexpr函数、variadic templates可变参数模板等特性,扩展了C++的语言能力和表达力。