- 2025-01-01只谈C++11新特性 - 显式转换函数
显式转换函数背景与问题在C++11之前,explicit关键字只能用于构造函数。其作用是阻止构造函数在需要隐式转换时被调用。例如:示例问题(C++11之前的explicit用法)#include<iostream>classExample{public:explicitExample(intvalue){std::cout<<
- 2024-12-27只谈C++11新特性 - 删除函数
删除函数背景在C++11之前,C++的类默认会生成拷贝构造函数和赋值运算符。这在某些情况下会引发问题,尤其是在我们希望明确禁止某些操作时。假设我们有一个类,它不希望被拷贝,但未明确声明拷贝构造函数和赋值运算符,这时编译器会自动生成默认实现,导致程序员可能无意间拷贝了该
- 2024-12-26只谈C++11新特性 - 默认函数
默认函数C++11之前的问题在C++11之前,如果给一个类显式地声明了构造函数(无论是默认构造函数还是自定义的),系统就不会再生成默认的抽象赋值函数和拷贝构造函数。这带来了一些不方便和隐藏的问题。举一个简单的例子:#include<iostream>classMyClass{public:MyC
- 2024-12-24只谈C++11新特性 - 显式虚函数重写
显式虚函数重写背景说明在C++11之前,C++的虚函数机制虽然非常强大,但也带来了一些潜在问题。特别是对于大型代码库,当派生类需要重写基类的虚函数时,可能会因为疏忽而引入错误:拼写错误:如果派生类的函数签名不完全匹配基类的虚函数签名,那么派生类的函数并不会覆盖基类的
- 2024-12-21只谈C++11新特性 - nullptr
nullptr在C++11标准中,引入了nullptr关键字,用来表示空指针。这是对原有NULL的重要改进,提供了更强的类型安全性,并避免了一些常见的编程错误。1.nullptr的特点nullptr是一种新类型std::nullptr_t的常量,用于表示空指针。与NULL不同,nullptr具有明确的指针类型
- 2024-12-19只谈C++11新特性 - auto
autoC++11应用auto关键字,不再需要明确指定类型,而是由编译器根据设定值来自动推断对应的类型。下面我们将详细解释auto的使用,并通过代码例子来展示。1.auto的基本使用C++11中的auto可以自动推断变量的类型:#include<iostream>#include<vector>intmain()