C++11:新特性(总结+实例)

目录

1、自动类型推断(auto)

2、范围for循环(range-based for loop)

3、基于范围的循环支持迭代器

4、nullptr

5、lambda表达式

6、智能指针(smart pointers)

7、原始字符串字面量(raw string literals)

9、空函数(nullptr_t)

10、委托构造函数(delegating constructors)


C++11是C++语言的一个重要版本,引入了许多新的特性和语法改进,使得C++编程更加方便、高效和安全。下面是一些C++11的新特性和实例的详解。

1、自动类型推断(auto)

C++11引入了auto关键字,用于自动推断变量的类型。这样可以简化代码,减少类型重复。

auto x = 10; // x的类型被推断为int
auto y = 3.14; // y的类型被推断为double
2、范围for循环(range-based for loop)

范围for循环可以在遍历容器或数组时更加简洁和直观。

std::vector<int> nums = {1, 2, 3, 4, 5};

for (auto num : nums) {
    std::cout << num << " ";
}
// 输出:1 2 3 4 5
3、基于范围的循环支持迭代器

范围for循环也可以用于遍历支持迭代器的对象。

std::string str = "Hello, World!";

for (auto c : str) {
    std::cout << c << " ";
}
// 输出:H e l l o ,   W o r l d !
4、nullptr

nullptr是一个新的空指针常量,可以用于取代NULL或0,提高代码的可读性和类型安全性。

int* p = nullptr;
5、lambda表达式

lambda表达式允许我们在代码中定义匿名函数,简化了函数对象的使用。

std::vector<int> nums = {1, 2, 3, 4, 5};

std::for_each(nums.begin(), nums.end(), [](int num) {
    std::cout << num << " ";
});
// 输出:1 2 3 4 5
6、智能指针(smart pointers)

C++11引入了三种智能指针:shared_ptr、unique_ptr和weak_ptr,用于管理动态分配的内存,避免内存泄漏和悬空指针的问题。

std::shared_ptr<int> p1(new int(10));
std::unique_ptr<int> p2(new int(20));
std::weak_ptr<int> p3 = p1;

std::cout << *p1 << " " << *p2 << std::endl;
// 输出:10 20
7、原始字符串字面量(raw string literals)

原始字符串字面量可以用于在字符串中包含特殊字符,而无需进行转义。

std::string str = R"(C:\Windows\System32\)";
std::cout << str << std::endl;
// 输出:C:\Windows\System32\

8、强类型枚举(strongly-typed enum)
强类型枚举可以限制枚举类型的作用域,避免了枚举常量的命名冲突。

enum class Color { Red, Green, Blue };
enum class Size { Small, Medium, Large };

Color color = Color::Red;
Size size = Size::Medium;
9、空函数(nullptr_t)

空函数是一个新的类型nullptr_t,可以用于表示空函数指针。

void func(nullptr_t) {
    std::cout << "Null function pointer" << std::endl;
}

func(nullptr);
// 输出:Null function pointer
10、委托构造函数(delegating constructors)

委托构造函数允许一个构造函数调用另一个构造函数,减少了重复的代码。

class MyClass {
public:
    MyClass() : MyClass(0) {}
    MyClass(int x) : x_(x) {}

private:
    int x_;
};

以上是C++11的一些新特性和实例的详解,这些特性使得C++编程更加方便、高效和安全。学习和掌握这些特性可以提高代码的质量和开发效率。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值