C++新特性delete
时间: 2023-04-02 12:02:48 浏览: 69
C 新特性 delete 是 C++ 中的一个关键字,用于释放动态分配的内存空间。在 C++ 中,使用 new 运算符动态分配内存后,需要使用 delete 运算符释放内存,否则会导致内存泄漏。在 C 语言中,可以使用 malloc 函数动态分配内存,使用 free 函数释放内存。但是,C 语言中没有 delete 关键字。
相关问题
c++11新特性智能指针
C++11引入了智能指针(smart pointers),它们是一些用于管理动态分配的内存的类模板。C++11中引入的主要智能指针有:
1. `std::shared_ptr<T>`:共享指针,用于共享资源的所有权。它使用引用计数来跟踪指针的引用次数,当引用计数变为零时,自动释放内存。可以通过`std::make_shared<T>()`来创建`shared_ptr`对象。
2. `std::unique_ptr<T>`:独占指针,用于独占资源的所有权。它不能被复制或共享,但可以通过移动语义进行转移。当`unique_ptr`超出作用域或被显式释放时,它会自动释放内存。
3. `std::weak_ptr<T>`:弱引用指针,用于解决循环引用的问题。它不会增加引用计数,可以用来观测`shared_ptr`是否还存在,避免悬空指针的问题。
智能指针的引入可以帮助开发者更方便地管理动态分配的内存,避免内存泄漏和悬空指针等问题。使用智能指针可以减少手动调用`delete`或`delete[]`的需要,提高代码的安全性和可维护性。
C++14有哪些新特性
C++14(也称为C++1y)是C++语言的一个版本,引入了一些新的特性和改进。以下是C++14的一些新特性:
1. 通用lambda表达式:允许lambda表达式以auto作为参数类型和返回类型。
2. 初始化列表支持:扩展了初始化列表语法,使其适用于所有的STL容器。
3. constexpr函数:可以在编译时计算的函数。
4. 变长模板参数:允许模板定义可变数量的参数。
5. 模板别名:可以使用typedef来定义模板别名。
6. 常量表达式:允许在编译时计算的更多表达式,包括if和switch语句。
7. 二进制字面量:允许使用0b或0B前缀来表示二进制数。
8. 通用的函数返回类型推断:允许使用auto来推断函数返回类型。
9. 强制类型转换的简化:允许使用static_cast和dynamic_cast进行简化的类型转换。
10. 删除和默认函数:允许使用=delete和=default来定义删除和默认函数。
这些新特性使得C++14更加强大和易于使用。