构造函数初始化列表

一、构造函数初始化列表的基本形式
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,
每个数据成员后面跟一个放在括号中的初始化式。

第一种:
student(int m,int n):shengao(m),tizhong(n)
{
cout<<“初始化”<<endl;
}
第二种:
student():shengao(1.75),tizhong(100)
{//student接收传进来的两个数,然后将两个数分别赋值给shengao,tizhong
//之后private中的shengao和tizhong就分别有值了
cout<<“初始化”<<endl;
}
代码举例:对应第一种
#include
using namespace std;
class student
{
private:
double shengao;
int tizhong;
public:
student(double m,int n):shengao(m),tizhong(n)
{//student接收传进来的两个数m和n,然后m赋值给shengao,n赋值给tizhong
//之后private中的shengao和tizhong就分别有值了
cout<<“初始化”<<endl;
}
void show()
{
cout<<shengao<<endl<<tizhong;
}
} ;
int main()
{
student lisi(1.75,100);
lisi.show();
return 0;
}
代码举例:对应第二种
#include
using namespace std;
class student
{
private:
double shengao;
int tizhong;
public:
student():shengao(1.75),tizhong(100)
{//将两个数分别赋值给shengao,tizhong
//之后private中的shengao和tizhong就分别有值了
cout<<“初始化”<<endl;
}
void show()
{
cout<<shengao<<endl<<tizhong;
}
} ;
int main()
{
student lisi;
lisi.show();
return 0;
}
二、成员变量的初始化顺序只与成员变量在类中声明的顺序有关,与初始化列表中列出的变量的顺序无关
//代码举例2:
#include
using namespace std;
class text
{
private:
int math;
int English;
public:
text():English(90),math(English+10){}
//因为先声明的math,但是当把English+10的值赋给math的时候还不知道English,
//所以输出的math是个不确定的值(输出的math是个垃圾值)
//math初始化完了之后,初始English,把90赋给English,最后输出90
void print();//在此处声明print函数
} ;
void text::print()//print函数是text类的一个函数
{
cout<<math<<endl<<English;
}
int main()
{
text t;//定义t是text类的一个对象
t.print();
return 0;
}


三、必须要使用列表初始化的时候
引用成员变量
const成员变量
自定义类型成员(且该类没有默认构造函数时)

#include
using std::cout;
using std::endl;

class A
{
public:
A(int a = 77) :_a(a)
{
;
}
private:
int _a;
};

class Date
{
public:
Date(int year, int month, int day,int y)
:_year(year)
, _month(month)
, _day(day)
,_x(6)
,_y(y)
{
;
}

void Print()
{cout << "_year: " << _year << endl;cout << "_month: " << _month << endl;cout << "_day: " << _day << endl;cout << "_x: " << _x << endl;cout << "_y: " << _y << endl;
}

private:
int _year;
int _month;
int _day;

int _second;//内置类型//下面的类型必须在定义的时候初始化===》体现了初始化列表的作用
const int _x;
int& _y;
A _aa;//自定义类型

};

int main()
{
Date d1(2023, 2, 4, 11);
d1.Print();
return 0;
}

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

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

相关文章

【c++】c++基本语法知识-命名空间-输入输出-缺省参数

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.命名空间 1.2 命名空间定义 1.3 命名空间使用 命名空间的三种使用方式 2.C输入&输出 std命名空间的使用惯例 3.缺省参数 3…

显示android设备所以已安装App 可点击启动、搜索

app名称*表示此app是系统应用&#xff0c;复制到项目后清单文件注册便可启动&#xff0c;此activity无需任何xml文件。 android 11系统以上清单需要配置以下权限&#xff1a; <uses-permission android:name"android.permission.QUERY_ALL_PACKAGES" /> p…

linux scp 免密传输配置 案例

目录 说明准备实现结果步骤生成RSA公钥和私钥查看密钥生成结果将公钥传输到目标服务器 额外内容自动备份文件脚本定时删除备份文件 说明 日常工作中常常会使用到ssh 的scp命令进行文件传输。有时候甚至使用自定义的脚本配合定时任务来对文件进行异地备份&#xff0c;那么此时就…

【Qt】常用控件(按钮/单选按钮/复选按钮/QLabel)

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、按钮类控件 1、QPushButton(按钮) 1.1pushButtn中插入图片(void setIcon(const QIcon &icon);) 1.2给按钮插…

Laravel+workman+redis实现多线程异步任务处理

前言 PHP本身并不直接支持多线程编程&#xff0c;因为PHP的设计初衷是作为一个脚本语言&#xff0c;主要面向的是Web开发。不过我们可以使用一些扩展和库来实现多线程的功能&#xff0c;比如workerman和swoole。通过多线程异步执行任务&#xff0c;可以大大提高代码的执行效率。…

Java 学习和实践笔记(40):String类详解

示例代码&#xff1a; public class TestString {public static void main(String[] args) {String s0 null;//这是什么都没有&#xff0c;连对象都没有&#xff0c;也就是指针还没有指到某一个地址String s1 "";//这是有对象了&#xff08;指针已指向某一个地址了…

ocp考试通过率如何?ocp考试内容有哪些?

OCP考试通过率如何 通过率30%左右。考试笔试和上机都考。OCP认证想考好&#xff0c;自己必须有点能力撒&#xff0c;不要想着通过率怎么样&#xff0c;学的不怎么好&#xff0c;你学了那个不通过的就是你&#xff0c;这方面还是要看下自己的动力&#xff0c;每天不怎么学习&…

如何使用 ArcGIS Pro 生成TIN

三角网是一种常用于表示地表地形的数字地球模型&#xff08;DEM&#xff09;方式&#xff0c;我们可以通过 ArcGIS Pro 将等高线和高程点转换为TIN&#xff0c;这里为大家介绍一下转换方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的高…

Java | 集合中正确使用Stream流

大家好&#xff0c;我是程序员影子 一名致力于帮助更多朋友快速入门编程的程序猿 今天来聊一聊关于Java 中的集合中正确使用Stream流 一、Stream的创建 Java 8 引入了Stream API&#xff0c;它可以让你以一种声明的方式处理数据。Stream可以由集合创建&#xff0c;使用stre…

智能合约 - 部署ERC20

Remix介绍 Remix是一个由以太坊社区开发的在线集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在帮助开发者编写、测试和部署以太坊智能合约。它提供了一个简单易用的界面&#xff0c;使得开发者可以在浏览器中直接进行智能合约的开发&#xff0c;而无需安装任何额外的…

springboot整合springsecurity,从数据库中认证

概述&#xff1a;springsecurity这个东西太容易忘了&#xff0c;这里写点东西&#xff0c;避免忘掉 目录 第一步&#xff1a;引入依赖 第二步&#xff1a;创建user表 第三步&#xff1a;创建一个用户实体类&#xff08;User&#xff09;和一个用于访问用户数据的Repository…

第十四届蓝桥杯省赛C++B组题解

考点 暴力枚举&#xff0c;搜索&#xff0c;数学&#xff0c;二分&#xff0c;前缀和&#xff0c;简单DP&#xff0c;优先队列&#xff0c;链表&#xff0c;LCA&#xff0c;树上差分 A 日期统计 暴力枚举&#xff1a; #include<bits/stdc.h> using namespace std; int …

Transformer的前世今生 day01(预训练、统计语言模型)

预训练 在相似任务中&#xff0c;由于神经网络模型的浅层是通用的&#xff0c;如下图&#xff1a; 所以当我们的数据集不够大&#xff0c;不能产生性能良好的模型时&#xff0c;可以尝试让模型B在用模型A的浅层基础上&#xff0c;深层的部分自己生成参数&#xff0c;减小数据集…

RabbitMQ的幂等性、优先级队列和惰性队列

文章目录 前言一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 前言 一、幂等性 1、概念 2、消息重复消费 3、…

【uniapp】表单验证不生效的解决方案

表单验证这个常见的功能&#xff0c;明明在element ui等框架已经用的很熟了&#xff0c;在uniapp开发时还是处处碰壁&#xff1f;这篇文章我会提示uni-forms表单验证的几个注意点&#xff0c;帮助大家排查。 示例 下面是一份包含普通验证和自定义验证的示例&#xff1a; <…

通过Pytest 多数据库连接实例了解Python工厂模式与单例模式的区别

1. 前言 在做自动化测试时&#xff0c;有些特殊项目需要连接不同的数据库进行造数或者断言。自动化框架中&#xff0c;一般使用Pytest yaml 数据驱动的居多&#xff0c;如果一个项目中有上百条数据库相关测试用例&#xff0c;在数据库测试时&#xff0c;如果设计不合理的连接模…

【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程

文章目录 一、什么是CodeGeeX&#xff08;一&#xff09;我理解的CodeGeeX&#xff08;二&#xff09;优缺点 二、CodeGeex下载、安装、注册&#xff08;一&#xff09;安装VS Code(Visual Studio Code)&#xff08;二&#xff09;下载安装CodeGeeX&#xff08;三&#xff09;注…

Java项目:59 ssm小型企业办公自动化系统的设计和开发+vue

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统可以提供信息显示和相应服务&#xff0c; 其管理员管理部门经理&#xff0c;管理总经理&#xff0c;管理员工和员工留言以及员工工资&…

[经验分享]OpenCV显示上一次调用的图片的处理方法

最近在研究OpenCV时发现&#xff0c;重复调用cv::imshow("frame", frame)时&#xff0c;会显示出上一次的图片。 网上搜索了方法&#xff0c;有以下3种因素可能导致&#xff1a; 1. 图像变量未正确更新&#xff1a;可能在更新 frame 变量之前就已经调用了 imshow。…

Stream流将List列表中的每个对象赋值给另外一个List列表中的每个对象

源代码&#xff1a; public void repetition(Long id) {// 查询当前用户idLong userId BaseContext.getCurrentId();// 根据订单id查询当前订单详情List<OrderDetail> orderDetailList orderDetailMapper.getByOrderId(id);// 将订单详情对象转换为购物车对象List<…