C++进阶 —— 其他(C++11新特性)

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南 本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。 阅读详情

目录

一,final与override

二,默认成员函数的控制

显式缺省函数

删除默认函数


一,final与override

        C++对函数重写的要求比较严格,如函数名字母次序写反即无法构成重载,而这种错误在编译期间无法识别,只有在程序运行时没有得到预期结果才会发现得不偿失;因此C++11提供了关键字override和final,可帮助检测是否重写了;

final

  • 修饰类,防止子类继承该类;
  • 修饰虚函数,表示该虚函数不能在被重写;
class Car final{};
//不可将final类作为基类
class Benz :public Car {};
class Car
{
public:
	virtual void Drive() final {cout << "Car" << endl;}
};

class Benz :public Car
{
public:
    //报错,无法重写final函数
	virtual void Drive() {cout << "Benz" << endl;}
};

override

  • 检查派生类虚函数是否重写了基类某个虚函数,如没有编译报错;
class Car
{
public:
	virtual void Drive() {cout << "Car" << endl;}
};

class Benz :public Car
{
public:
    //报错,没有重写基类成员,基类中不存在Dri虚函数
	virtual void Dri() override {cout << "Benz" << endl;}
};

二,默认成员函数的控制

        在C++中,对于空类编译器会生成一些默认成员函数(如构造函数、拷贝构造函数、运算符重载、析构函数,&和const&重载、移动构造函数、移动拷贝构造函数等);如在类中显式定义了,编译器将不会重新生成默认版本;有时这些规则可能被忘记,最常见的是声明了带参数的构造函数,必要时则需要定义不带参数的版本以实例化无参的对象;而且有时编译器会生成,有时又不会生成,容易产生混乱,于是C++11让程序员可以控制是否需要编译器生成;

显式缺省函数

        在C++11中可以在默认函数定义或声明时加上=default,从而显式的指示编译器生成该函数的默认版本,用=default修饰的函数称为显式缺省函数;

class A
{
public:
    A(int a)
        :_a(a)
    {}
    A() = default; //显式缺省构造函数,由编译器生成
    A& operator=(const A& a); //在类中声明,在类外定义时让编译器默认生成
private:
    int _a;
};
A& A::operator=(const A& a) = default; //显式缺省赋值重载函数,由编译器生成
class Example {
public:
    Example() = default;
    // 声明移动操作会隐式删除拷贝操作
    Example(Example&&) = default;
    Example& operator=(Example&&) = default;
};

int main() {
    Example a, b;
    Example c = a; //报错
    a = b; //报错
}

删除默认函数

        如想限制某些默认函数的生成,在C++98中将函数设置成private并且不给定义,这样只要调用就会报错;在C++11中更简单,只需在该函数声明加上=delete即可,该语法指示编译器不生成对应函数的默认版本,称=delete修饰的函数为删除函数;

注意,避免删除函数和explicit一起使用;

//C++98
class A
{
public:
    A(int a)
        :_a(a)
    {}
private:
   A();
   A& operator=(const A& a);
private:
    int _a;
};
class A
{
public:
    //禁止编译器生成默认的拷贝构造和赋值运算符重载
    A() = delete;
    A& operator=(const A& a) = delete;
    //避免与explicit一起使用
    explicit A(int a) = delete;
private:
    int _a;
};

基于Python的FTA协定内容爬虫实战:从数据抓取到智能分析 本文将详细介绍如何使用Python构建一个高效的FTA(自由贸易协定)内容爬虫,涵盖最新技术如Playwright、异步IO、智能解析等。通过本教程,您将学会如何从各类政府网站和国际组织平台抓取结构化FTA数据,并对其进行清洗、存储和分析。文章包含完整的代码实现和最佳实践指南,适合中高级Python开发者学习网络爬虫开发。 阅读详情

相关推荐

价值投资/指标选股(akshare)

利用akshare的数据源,可以获取所有的股票数据以及公开的财务数据,可以进行条件筛选,获取满足条件的股票。 这套模板可以用于价值投资,指标选股。选股周期为日线级别。然后结果可以邮箱发送。 import time import akshare as ak ## A 股上市公司的实时行情数据 stock_zh_a_spot_df = ak.stock_zh_a_spot() #print(stock_zh_a_spot_df) ##取前300测试 ##取前300测试 df_stock =...

qq_26742269的博客 1万+

【cpp进阶】c++11的新特性(概述版)

C++11是C++历史上最重要的更新,它通过移动语义、智能指针、Lambda、自动类型推导等特性,让C++在保持C级性能的同时,获得了Rust/Python级的生产力,实现了语言的现代化重生。 这就是C++11的故事——一个关于性能、安全、生产力三者兼得的传奇。

2301_80127108的博客 1050

从零到飞:在Ubuntu 22.04上为你的无人机搭建PX4-Autopilot开发环境

本文详细指导在Ubuntu 22.04上搭建PX4-Autopilot开发环境,涵盖系统依赖安装、源码获取、编译目标选择及Gazebo仿真测试。通过优化构建过程和调试技巧,帮助开发者快速为无人机部署稳定的飞控系统,实现从仿真到实机的平滑过渡。

weixin_26878995的博客 489

C++进阶篇,C++11新特性

介绍了C++11的重要特性,从统一初始化,使得所有类型可以做统一初始化处理,介绍了右值引用以及和左值引用的区别,介绍了可变参数的一些简单用法。还有lambda表达式和包装器,最后介绍了C++11的线程库。

CHAKMING1的博客 1134

基于Qwen3-14B大模型的智能UI自动化测试实践

UI自动化测试是软件工程中保障产品质量的关键环节,其核心原理是通过脚本模拟用户操作,对软件界面进行功能验证。传统方法依赖于编写和维护基于元素定位的固定规则脚本,在面对复杂交互或频繁变化的界面时,维护成本高昂。大语言模型(LLM)的出现为这一领域带来了新的技术价值,其强大的自然语言理解和代码生成能力,使得测试脚本的编写从精确编码转向了任务描述。通过将大模型作为决策大脑,结合Playwright等自动化工具作为执行器,可以构建出能够理解界面、规划操作并验证结果的智能测试系统。这种方案特别适用于处理变化频繁、逻辑

weixin_42619742的博客 302

23、管状剪纸结构的研究与功能生成连杆机构的综合设计

本文研究了管状剪纸结构的压缩运动特性,通过剪纸技术将非刚性可折叠的Yoshimura和Kresling折纸结构转化为刚性可折叠结构,并提出径向可闭合剪纸(RC-kiri)构型。推导了位移与折叠角之间的数学关系,设计了带外部LET接头的RC-kiri模型,建立了力-位移理论模型并通过Abaqus进行有限元验证,制作了3D打印物理模型以测量直径变化。同时,研究了四杆和六杆功能生成连杆机构的综合设计方法,基于负闭合运动链和最小二乘法实现函数生成。结果表明理论、仿真与实验整体吻合良好,误差来源得到分析,为机器人、机

nokia的博客 167

C++进阶:C++11的新特性

2011年,C++标准委员会发布了C++11标准,这是C++的一次巨大飞跃,引入了许多重要的新特性,如智能指针、lambda表达式、并发编程支持等。这一版本的发布对C++社区产生了深远的影响,使得C++在现代软件开发中更具竞争力。

QinMou 1172

2、微软 Power Automate 入门指南

本文是一篇关于微软 Power Automate 的入门指南,详细介绍了 Power Automate 的基本概念、相关术语、登录方式以及如何创建一个简单的自动化流。文章还探讨了 Power Automate 在业务流程中的应用场景和优势,并展望了其高级功能和未来发展。适合希望快速入门 Power Automate 并提升业务自动化效率的读者。

corn8的博客 440

【C++进阶】C++11新特性上篇(万字详解)

C++11新增特性详解

m0_60338933的博客 1273

广东省道路工程检测练习试题(单选题)真题

1.一般项目的合格点率应达到( ),且不合格点的最大偏差值不得大于规定允许偏差值的1.5倍。A.不低于75%B.不低于80%C.不低于85%D.不低于90%答案:B2.进行土路基平整度检测时,当路宽小于9m,检测点数应为( )A.1B.2C.3D.4答案:A3.根据《城镇道路工程施工与质量验收规范》,在分部工程中,根据工种、材料、施工工艺等划分的是( )A.单位工程B.分项工程C.分部工程D.工序工程答案:B4.根据《城镇道路工程施工与质量验收规范》,土方路基压实度的检测频率为每1000m每压实层抽检( )

ZShy001238的博客 681

MOS管基础知识及应用电路Multisim仿真

本文系统介绍了MOS管的基础知识及其在电子电路中的典型应用。首先详细解析了MOS管的基本结构、分类和工作原理,包括NMOS、PMOS及CMOS的特性差异。重点阐述了MOS管的三种放大组态电路(共源、共漏、共栅)及其小信号模型分析。随后通过Multisim仿真验证了MOS管在防反接电路、开关电路、放大电路、逻辑门电路、电平转换电路和开关电源(BUCK、BOOST、BUCK-BOOST)等应用中的实际表现。文章还深入探讨了自给偏压和分压式偏置电路的设计要点。全文通过理论分析与仿真实验相结合的方式,全面展示了MO

XU157303764的博客 1482

【C++进阶篇】C++11新特性(上篇)

C++11标准带来革命性更新:从2003年启动到2011年正式发布,历经8年发展,终结了C++98/03时代。核心改进包括: 统一初始化方式:引入{}列表初始化,支持内置类型和自定义类型,配合explicit防止隐式转换; 类型推导:auto简化复杂类型声明,decltype精确获取表达式类型; 智能指针:基于RAII技术自动管理资源,防止内存泄漏; 标准库增强:容器支持initializer_list构造,提升代码简洁性。这些特性显著提高了类型安全、代码可读性和资源管理效率,成为现代C++开发的基石。

braveact的博客 1329

paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本)

PP-YOLOE+是PP-YOLOE模型的升级版,PP-YOLOE+_l在COCO test-dev2017达到了53.3的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。PP-YOLOE+_s/m/x同样具有卓越的精度速度性价比。paddle官方只给出了基于paddle框架的部署案例,为了更好的部署,为此实现将paddle模型转换为onnx模型,然后在python下实现onnxruntime部署。后续会补充c++ onnxruntime部署

a486259的博客 1914

【c++进阶】C++11新特性:一切皆可{}初始化

C++11通过{}统一了所有初始化语法,让代码更安全简洁

2301_80127108的博客 794

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++进阶 —— 列表初始化(C++11新特性)

列表初始化;

NapoleonCoder的博客 2821

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【C++ | 进阶】(侯捷)C++11/14新特性

C++11/14新特性 〇、概述 C++Standard演化:C++98(1.0)、C++03(TR1)、C++11(2.0)、C++14(对11一些地方的加强) C++2.0新特性包括语言和标准库层 Header files 区别: C++标准库的header files不带副档名(.h),例如#incldue<vector> 新式C header files不带副名称(.h),例如#inlcude<cstdlio> 旧式C header files带有副名称(.h),例如#in

Midnight_city的博客 2028

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C++进阶之路《C11新特性》

C11

qq_48083892的博客 1293

C++进阶 —— 范围for(C++11新特性)

范围for;

NapoleonCoder的博客 2299

C++进阶 —— auto/decltype(C++11新特性)

类型推导auto,类型查询decltype;

NapoleonCoder的博客 1602

C++进阶 —— 线程库(C++11新特性)

线程库;

NapoleonCoder的博客 1408

[C++进阶] 25. C++11新特性(一)

也是一个表示数据的表达式,要么是字面值常量,要么临时对象,或者是匿名对象、move后的值(move是一个函数,后面介绍),他们的生命周期通常只在当前一行(可通过一定方式延长生命周期,后面会介绍)。② 需要注意的是在vs2019的release和vs2022及之后的debug和release的优化比较激进,直接将str对象的构造,str拷贝构造临时对象,临时对象拷贝构造ret对象,合三为一,变为直接构造。语法设计上是如何解决这个矛盾的?并不是的,因为这种优化方式并不是C++标准规定的,是编译器自行实现的。

2401_87713146的博客 373

c++进阶之----c++11新特性(左值右值)

左值引用和右值引用是 C++11 引入的两种引用类型,它们的主要区别在于绑定的对象类型。左值引用(lvalue reference)定义:左值引用绑定到一个有名字的对象(左值)。

2401_85878549的博客 1055

【C++进阶】C++11的新特性 | 列表初始化 | 可变模板参数 | 新的类功能

本文介绍了C++11标准中的新特性,重点讲解了列表初始化的相关内容。 在列表初始化方面,C++11扩展了C++98中{}初始化的使用范围,使其可以用于一切对象的初始化,包括内置类型和自定义类型。文章通过代码示例展示了如何使用{}初始化各种类型对象,并解释了背后的优化原理。 特别介绍了std::initializer_list类,这是STL容器支持列表初始化的关键。通过initializer_list,容器可以方便地接受任意多个值的初始化列表。文章还展示了容器如何利用initializer_list实现初始化

Linux、C++、图形软件开发等。不一定每次都能写出完美的代码,但会认真搞懂每一个问题。 1409

当面试官问 C++ 11 新特性的时候,应该怎样回答?

GitHub - balloonwj/flamingo: flamingo 一款高性能轻量级开源即时通讯软件我为 Flamingo 专门录制了三部高清技术讲解视频以方便读者学习,视频中介绍了Flamingo的编译和部署方法、整体架构、各个模块的技术实现细节以及如何学习Flamingo的方法,视频下载链接:链接:提取码: id63。

张小方的博客 956

C和C++进阶的学习笔记总结目录

| | || ||–|--| C语言 – – – – – C++ – – C++基础学习目录总结 https://blog.youkuaiyun.com/u011436427/article/details/103339886 – – – – – – – – – – ...

喜欢打篮球的普通人 1217

一本深入探讨C++11~C++17最新语言特性的书推荐给你

近10年来C++的更新可谓是非常频繁,这让我在2017年时感受到了一丝不安。那个时候我发现在开源平台上已经有很多项目采用C++11和C++14标准编写,其中不乏一些知名的代码库,而公司里所用的编译环境还没有完全支持C++11,也很少有人真正了解过C++11的新特性。这带来一个很严重的问题,公司项目依赖的代码库更新到最新标准以后,我们将难以在一时之间维护甚至阅读它们,因为C++之父曾经说过“These enhancements are sufficient to make C++11 feel like a

人邮异步社区 2092
上一篇: C++进阶 —— 右值引用(C++11新特性)
下一篇: C++进阶 —— 线程库(C++11新特性)
挨代码
博客等级 码龄5年 1696粉丝 384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值