文章 2023-11-15 来自:开发者社区

c++新特性:=delete

C++11引入的=delete是一种特性,它用于明确禁用或删除类的成员函数、特殊成员函数、或者其他成员函数。=delete的主要目的是在编译时捕获潜在的错误,并提供更精确的控制,以确保类的行为符合设计要求禁用默认函数:使用=delete可以禁用类的默认构造函数、复制构造函数、复制赋值运算符、移动构造函数、移动赋值运算符或析构函数。这对于防止特定的操作非常有用,例如禁止对象的复制或禁止析构函数的调....

文章 2023-11-15 来自:开发者社区

c++新特性:=default

=default 是C++11引入的一种特性,它允许显式要求编译器生成默认的特殊成员函数。特殊成员函数包括默认构造函数、复制构造函数、移动构造函数、复制赋值运算符、移动赋值运算符以及析构函数。在默认情况下,如果你没有显式提供这些特殊成员函数的定义,C++编译器会自动生成它们。但是,有时你可能需要明确告诉编译器生成这些函数,这通常在以下情况下很有用:如果你手动提供了一个类的某个特殊成员函数的定义,....

文章 2023-11-15 来自:开发者社区

c++新特性:for循环特殊写法

C++11引入了一种新的for循环写法,称为Range-based for statement,也被称为foreach循环。这个新写法使遍历容器和其他可迭代对象变得更加简洁和易读。Range-based for statement语法:for (element_type element : iterable) { // 循环体 }这里的 element_type 是迭代元素的数据类型,i...

文章 2023-11-15 来自:开发者社区

c++新特性:explicit

C++中的关键字 "explicit" 是用来修饰类构造函数的,它在C++11标准中引入,主要用于防止隐式类型转换(Implicit type conversion)的发生,从而提高代码的可读性和安全性。什么是隐式转换?在C++中,如果一个类的构造函数可以用一个参数来调用,那么该构造函数就可以被用于隐式类型转换,将一个不同类型的对象转换为该类的对象。这种行为可能会导致一些不直观的代码和潜在的错误....

文章 2023-11-15 来自:开发者社区

c++11新特性

Variadic TempLates(数量不定的模板参数): ...(可以很方便的完成函数递归调用)...就是一个所谓的pack;用于模板参数,就是模板参数包;用于函数参数类型,就是函数参数类型包;用于函数参数,就是函数参数包。注意:要特别处理承参数为0个的情况sizeof...(args):参数个数void print(){ } template <typename T, typenam....

文章 2023-11-14 来自:开发者社区

C++11 新特性:default

在C++11标准中,可以使用default关键字来显式地声明默认的构造函数和析构函数。这样做有以下两个作用:生成默认实现:当一个类没有显式定义构造函数或析构函数时,编译器会自动生成默认的构造函数或析构函数。如果我们在类中使用了default关键字,则可以显式地告诉编译器使用默认的实现。防止默认实现被删除:在某些情况下,编译器不会生成默认的构造函数或析构函数,例如当类包含了一个用户自定义的构造函数....

文章 2023-11-13 来自:开发者社区

C++新特性:右值引用,移动语义,完美转发

一、什么是左值、右值1)左值可以取地址、位于等号左边;2)而右值没法取地址,位于等号右边。例如int a = 6;1)a可以通过 & 取地址,位于等号左边,所以a是左值。2)6位于等号右边,6没法通过 & 取地址,所以6是个右值。又例如struct A { A(int a = 0) { a_ = a; } int a_; }; A a = A(); 1)同样的,...

C++新特性:右值引用,移动语义,完美转发
文章 2023-11-13 来自:开发者社区

C++新特性:智能指针

一 、为什么需要智能指针智能指针主要解决以下问题:1)内存泄漏:内存手动释放,使用智能指针可以自动释放2)共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题,例如同样的数据帧,但是业务A和业务B处理的逻辑不一样(都是只读)。可以用shared_ptr共享数据帧对象的所有权。线程A释放的时候,shared_ptr的引用计数count - 1,当为0的时候释放数据帧对象指针。主要类型:C....

C++新特性:智能指针
文章 2023-11-13 来自:开发者社区

C++ 17 新特性之filesystem

文件系统库C++文件系统库文件系统库提供在文件系统与其组件,例如路径、常规文件与目录上进行操作的设施。文件系统库原作为 boost.filesystem 开发,出版为技术规范 ISO/IEC TS 18822:2015 ,并最终从 C++17 开始并入 ISO C++ 。现在 boost 实现可用的编译器和平台于多于 C++17 库。若层级文件系统不能为实现所访问,或若它不提供必要的兼容性,则文....

文章 2023-11-13 来自:开发者社区

Linux下怎样编译通过使用C++17新特性的代码?

需要有环境 [[Linux怎样更新Centos下Gcc版本支持C17?]]代码需要在编译时指定 c++版本如果使用多线程和锁,要加-pthread使用文件系统类,需要额外的编译选项 -lstdc++fs不需要额外指定动态库或者静态库地址,filesystem类包含在了libstdc++.so中-rw-r--r-- 1 root root 4887654 Mar 27 2020 libstdc+.....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

开发与运维

集结各类场景实战经验,助你开发运维畅行无忧

+关注