C++11特性-类的改进

news2024/11/17 2:58:22

1.构造函数

        1.委托构造函数:允许同一个类的构造函数调用其他构造函数,简化变量初始化

class BB
{
public:
	BB() {}
	BB(int max) {
		this->m_max = max > 0 ? max : 100;
		cout << "max = " << this->m_max << endl;
	}

	BB(int max,int min):BB(max) {
		this->m_min = min > 0 && min < max ? min : 1;
		cout << "min = " << this->m_min << endl;
	}

	BB(int max ,int min ,int mid) :BB(max,min){
		this->m_mid = mid > min && mid < max ? mid : 100;
		cout << "mid = " << this->m_mid << endl;
	}

	int m_max;
	int m_min;
	int m_mid;
};

                不能形成闭环,只能形成链路

                只能使用初始化成员列表的方式调用,否则编译器会报错(形参的重定义)

                在初始化列表中调用委托构造函数初始化某个参数后,就不能在成员初始化列表中再初始化这个参数

                

        2.继承构造函数:子类可以直接继承父类的构造函数

                父类的构造函数不能是默认构造函数、拷贝构造函数、移动构造函数

                继承的构造函数只能初始化父类的成员变量,不能初始化子类的成员变量

                父类的构造函数时私有的或者子类的构造函数是虚继承时,不能继承构造函数

                使用继承构造,编译器不会为子类添加默认构造函数

class BBB :public BB
{
public:
	using BB::BB;//子类可以使用父类的所有构造函数
	using BB::func;//子类可以使用父类隐藏的函数

	void func() {
		cout << " BBB func = " << endl;
	}
};

2.final

        final可以修饰函数与类,放在函数或者累后面。

        final修饰函数时,只能修饰虚函数(阻止子类重写父类的这个函数)

        final修饰类时,防止类被继承(派生子类)

        virtual不能与final同时出现

3.override

        保证派生类中申明的重写函数与基类中的虚函数有相同的函数名,同时明确会重写基类的虚函数,保证重写虚函数的正确性。

4.初始化列表{}

        对象\变量\指针 {}        对象\变量\指针  = {}

        聚合类型可以使用初始化列表相当于给每个元素分别赋值;对于非聚合类型,则需要定义一个合适的构造函数,此时使用初始化列表会调用它对应的构造函数。

        聚合类:

                普通数组可以看做一个聚合体

                无基类、无虚函数、无用户自定义的构造函数、无私有或者受保护的非静态数据成员、无{}或=直接初始化非静态数据成员(c14支持)的类(class、struct、union)           

//类中有私有或者受保护静态成员可以使用初始化列表,但是静态成员不能使用初始化列表
struct T2 {
	int a;
	int b;
protected:
	static int c;

}t2{ 12,19 };
int T2::c = 10;

        非聚合类:需要使用类构造函数来初始化私有变量

class ListInit
{
public:
	ListInit(int num) :m_num(num) {
		cout << "m_num = " << this->m_num << endl;
	}
	ListInit(int num,string str):m_num(num),m_str(str) {
		cout << "m_num = " << this->m_num << " ,m_str = " << m_str << endl;
	}

private:
	int m_num;
	string m_str;
};

         聚合类型定义并非递归的,需要看实际情况判断      

struct T3
{
	int a = 3;
	int b[3]{1,2,2};
	int c;
	T2 tt2;
};

//初始化列表
T3 t4{ 44,{11,22,33},99,{} };

5. = default

        构造函数 = default,让编译器提供一个默认的构造函数,效率比用户自己写的高

         只能修饰类中默认的构成函数:无参构造、析构、拷贝构造、运算符重载函数

        一般放在类里面,也可以放在类外部

6. = delete

        = delete的作用是显示禁用某个函数

        类所有函数都可以使用= delete

7.initializer_list

        initializer_list(轻量级类模板)一般作为参数传递

        初始化时使用初始化列表{}初始化(只能把{}看做一个整体来初始化或者赋值)

        其作用是定义一个可以接受任意相同类型个数的参数的函数

void test_initializer_list(initializer_list<int> ls) {
	auto it = ls.begin();
	for (;it != ls.end();++it) {
		cout << *it << " ";
	}
	cout << endl;
}

//调用
test_initializer_list({1,2,3,4,56,67,7});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ATF】bootloader与安全相关启动分析

这个文章的内容不只是指的ATF启动这个部分&#xff0c;其实ATF是TF-A&#xff0c;这个是一个启动框架&#xff0c;所以今天我们来看看bootloader这部分的启动代码。后续继续补充&#xff01;&#xff01;&#xff01; 第一部分参考的内容来自&#xff1a;https://mp.weixin.qq…

美食餐厅网站毕业设计,餐厅座位预定系统设计与实现,毕业设计怎么写论文毕设源码开题报告需求分析怎么做

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于java的公司企业网站&#xff0c;整体基于B/S架构&#xff0c;技术上使用基于java的springboot框架来实现&#xff1b;通过后台添加公司资讯、公司产品、公司产品案例、查看注册用户、查看留言等&#xf…

【无人机分配】一种无人机实时最优任务分配模型附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

解决Android嵌套H5,自定义控制页面能否实现下拉刷新功能

目录使用场景问题描述思路分析解决方案结语使用场景 关于Android嵌套H5页面使用下拉刷新功能的问题&#xff1a;当我们在Android中使用第三方框架SmartRefreshLayout实现App的下拉刷新功能时&#xff0c;如果H5页面有部分功能设计到上下滑动的话&#xff0c;就会引起“误触”下…

Jenkins Kubernetes 应用部署与容器构建

Jenkins & Kubernetes 应用部署与容器构建 文章目录Jenkins & Kubernetes 应用部署与容器构建1. 前言2. Jenkins 配置 kubernetes credentials3. Jenkins 插件3.1 安装 Kubernets Plugin3.2 安装 Docker Plugin3.3 安装 Git Plugin4. Jenkins 连接 minikube 集群5. 配置…

MQ高级(一)消息可靠性

消息从生产者发送到exchange&#xff0c;再到queue&#xff0c;再到消费者&#xff0c;有哪些导致消息丢失的可能性&#xff1f; &#xff08;1&#xff09;发送时丢失&#xff1a; 1️⃣生产者发送的消息未送达exchange 2️⃣消息到达exchange后未到达queue &#xff08;2&…

【物理应用】基于傅里叶伽辽金谱法二维纳维-斯托克斯附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

[附源码]计算机毕业设计教育企业网站Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

当我们说大数据Hadoop,究竟在说什么?

前言 提到大数据&#xff0c;大抵逃不过两个问题&#xff0c;一个是海量的数据该如何存储&#xff0c;另外一个就是那么多数据该如何进行查询计算呢。好在这些问题前人都有了解决方案&#xff0c;而Hadoop就是其中的佼佼者&#xff0c;是目前市面上最流行的一个大数据软件&…

【精品】【含数据+代码+论文链接】交通流预测代码集合

前言 交通流预测代码集合 一、T-GCN 一种用于流量预测的时间图卷积网络 准确、实时的交通预测在智能交通系统中起着重要作用&#xff0c;对城市交通规划、交通管理和交通控制具有重要意义。然而&#xff0c;交通预测一直被认为是一个开放的科学问题&#xff0c;受限于城市…

Python完成期末大作业:简易计算器【案例分享】

嗨害大家好鸭&#xff01;我是小熊猫~ 好像好久都没给大家更新啦&#xff01; 这次来给大家做一个我弟刚刚做完的期末考试大作业 做一个简易计算器 要求&#xff1a; 1.要有加减乘除四个方法的编写2.提交的代码悟编译错误3.代码需要有基础的健壮性判断 源码、资料电子书点击…

汉明码(海明码)解析

文章目录前言启发汉明码介绍怎么实现汉明码?怎么实现更高模块的汉明码?为什么校验位一定是2的n次方?用更简洁的方式理解汉明码前言 相信使用过光盘的读者都会有这样一种经历,如果不小心刮花了盘面,大部分情况下,把它放进DVD机器却仍然可以播放视频,这是为什么呢? 因为光盘…

Tomcat打破双亲委派机制实现各应用程序的类库相互隔离原理与实现demo

1、实现原理 以Tomcat类加载为例&#xff0c;Tomcat 如果使用默认的双亲委派类加载机制行不行&#xff1f; 我们思考一下&#xff1a;Tomcat是个web容器&#xff0c; 那么它要解决什么问题&#xff1a; 1. 一个web容器可能需要部署两个应用程序&#xff0c;不同的应用程序可能会…

C++对const引用的特殊处理、为什么函数形参的引用建议加上const?只是为了防止值被修改吗?

前言&#xff1a;我们知道普通变量、指针、函数形参&#xff0c;加上const修饰表示不可改变&#xff0c;但是引用前面加上const就有特别之处了 目录 const日常使用 const引用的特别处理 const引用创建临时变量规则 引用形参声明为const的三个理由 const日常使用 我们知道如…

resnet(2)------看看卷积

文章目录1 . 人脑是怎么认识到物体的2. 卷积3. 卷积核1 . 人脑是怎么认识到物体的 在谈卷积之前&#xff0c;我们先来了解一下人是怎么认识物体的。 人脑是个非常复杂的结构&#xff0c;是由无数个神经元连接起来&#xff0c;每个神经元都有自己负责记忆的东西。当人眼看到物体…

关于自增约束auto_increment需要注意的地方,mysql8版本的报错

目录一&#xff0c;自增约束auto_increment需要注意的地方附&#xff1a;就算插入数据失败&#xff0c;也进行自增&#xff1a;二&#xff0c;自增约束auto_increment在MySQL8版本的报错&#xff1a;一&#xff0c;自增约束auto_increment需要注意的地方 1 创建数据库表class&…

Logistic回归

通常&#xff0c;Logistic回归用于二分类问题&#xff0c;例如预测明天是否会下雨。当然它也可以用于多分类问题. Logistic回归是分类方法&#xff0c;它利用的是Sigmoid函数阈值在[0,1]这个特性。Logistic回归进行分类的主要思想是&#xff1a;根据现有数据对分类边界线建立回…

啊?我这手速也太差了吧?——C++Easyx“挑战六秒”小游戏

&#x1f411;本文作者&#xff1a;C橙羊&#x1f411; &#x1f3ae;&#x1f50a;本文代码适合编译环境&#xff1a;DEV-C&#x1f4bb; ✨&#x1f9e8;温馨提示&#xff1a;此文转载于codebus&#x1f389;&#x1f3a0; 最近橙羊在Easyx官网的codebus里随便逛逛的时候&am…

SpringMVC从入门到精通(一)

文章目录1. SpringMVC基本概念1.1 三层架构1.2 MVC架构1.3 什么是SpringMVC1.4 SpringMVC的优势2. SpringMVC 的入门2.1 入门程序2.2 SpringMVC执行原理刨析2.3 SpringMVC的核心执行流程2.4 SpringMVC的组件3. RequestMapping注解4.请求参数绑定4.1 参数绑定4.2 请求参数乱码问…

磨金石摄影技能干货分享|优秀纪实摄影作品欣赏—北京记事

1、蜂窝煤 三名青年男子踏着三轮车拉着满满一车蜂窝煤。脸上流露出清澈的笑容。这是九十年代的北京&#xff0c;背后的天安门格外的显眼。那时候处于改革开放的初期&#xff0c;虽然还不是很富裕&#xff0c;但大家脸上洋溢着幸福与希望的笑容。 蜂窝煤是冬天必备&#xff0c;九…