C++之“构造函数”

文章目录

  • 类的默认成员函数
  • 构造函数

类的默认成员函数

默认成员函数就是我们没有在main函数里调用,但是编译器会自动生成的成员函数称为默认成员函数。

C++由8个默认成员函数,我们暂时了解6个。

在这里插入图片描述

默认成员函数:构造函数,析构函数,拷贝构造,取地址,重载。赋值重载,移动构造和移动赋值

构造函数

构造函数是特殊的成员函数

构造函数是在对象实例化的时候,初始化对象(相当于Init函数的功能)。 构造函数并不是开空间创建对象,我们常使用的局部对象在栈帧创建的时候,空间就已经创建好了。

构造函数的特性:

  1. 构造函数的函数名与类名相同
    比如:类是:class Person{};,那么在类里面的构造函数就是
class Person
{Person(){}
}
  1. 没有返回值。(C语言中没有返回值需要在函数名前面写void,这里不需要写void
  2. 对象实例化的时候,系统会自动调用相应的构造函数。(即调用那个和类名一样的函数,不需要我们再写Init)
#include<stdio.h>
#include<iostream>
class Data
{
public:Data()  //无参的构造函数{_year = 1;_month = 1;_day = 1;}Data(int year,int month,int day)  //有参的{_year = year;_month = month;_day = day;}void Print()   //千万记得,是构造函数不写void,其余的还是要写的{std::cout << _year << "/" << _month << "/" << _day << std::endl;}
private:int _year;int _month;int _day;
};
int main()
{Data d1;  //调用无参的//没有参数的时候,不能加()Data d2(1234,5,6); //调用带参的构造函数d1.Print();d2.Print();return 0;
}

在这里插入图片描述

  1. 构造函数可以重载,只要参数不同即可。
    在这里插入图片描述
    但是注意:无参的构造函数和全缺省的构造函数不可以同时存在,在调用时会出现歧义。

在这里插入图片描述
5. 如果我们没有在类中定义构造函数,则C++会自动生成一个无参的默认构造函数(但是否初始化,尚未可知)。
如果我们在类中定义了构造函数,编译器将不再生成,而是自动调用我们定义的构造函数。
6. 是否初始化:
前言:C++把类型分成内置类型(基本类型)自定义类型
内置类型就是语言提供的原生数据类型(int/char/double/指针等)
自定义类型就是我们使用class/struct等关键字自己定义的类型

  • 编译器默认生成的构造,对内置类型成员变量的初始化没有要求,即不一定初始化。
  • 对于自定义类型成员变量,要求调用这个成员变量的默认构造函数初始化
  • 【注意】:默认构造函数并不单单是:编译器默认生成的构造函数。
    默认构造函数有3种:<1>无参构造函数、<2>全缺省构造函数、<3>我们不写构造时编译器默认生成的构造函数。但是是这三个函数有且只有一个存在,不能同时存在。。。。总结一下就是不传实参就可以调用的构造就叫默认构造
    在这里插入图片描述
    如果这个成员变量,没有默认构造函数,那么就会报错
    在这里插入图片描述

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

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

相关文章

Vue3:同一项目同一浏览器只允许打开一个标签页

说明&#xff1a; 阻止同一浏览器打开多个项目标签页&#xff0c;防止多标签页重复时间统计累加&#xff0c;适用于基于微信公众号页面或指定浏览器的计时统计等项目活动&#xff0c;计时在线学习时间统计等。 效果&#xff1a; main.js import {createApp} from vue import…

Cloudlog delete_oqrs_line 未授权SQL注入漏洞复现

0x01 产品简介 Cloudlog 是一个自托管的 PHP 应用程序,可让您在任何地方记录您的业余无线电联系人。使用PHP和MySQL构建的基于Web的业余无线电记录应用程序支持从HF到微波的一般站记录任务 0x02 漏洞概述 Cloudlog delete_oqrs_line 接口存在未授权SQL注入漏洞,未经身份验…

【Python技术】利用akshare定时获取股票实时价,低于5日线钉钉通知报警

今天看了下大盘&#xff0c;临时有个想法&#xff0c;我想知道某个股票回踩5日线的价格&#xff0c;如果实时价格低于5日线通过钉钉报警通知我。 说干就干&#xff0c;临时撸了下简单的代码&#xff0c;仅做演示。 1、计算5日线思路 很多券商软件的MA5价格是近5个交易日收盘…

【Hive】6-Hive函数、运算符使用

Hive函数、运算符使用 Hive内置运算符 概述 整体上&#xff0c;Hive支持的运算符可以分为三大类&#xff1a;关系运算、算术运算、逻辑运算。 官方参考文档&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualUDF 也可以使用下述方式查看运算符的…

vue使用jquery的ajax,页面跳转

一、引入jquery依赖 打开终端更新npm npm install -g npm 更新完后引入输入npm install jquery 加载完后 在最外层的package.json文件中加入以下代码 配置好后导入jquery 设置变量用于接收服务器传输的数据 定义ajax申请数据 服务器的Controller层传输数据 &#xff08;…

【Java 并发编程】单例模式

前言 单例模式是一种十分常用但却相对而言比较简单的单例模式。虽然它简单但是包含了关于线程安全、内存模型、类加载机制等一些比较核心的知识点。本章会介绍单例模式的设计思想&#xff0c;会去讲解了几种常见的单例实现方式&#xff0c;如饿汉式、懒汉式、双重检锁、静态内部…

【大模型】AI视频课程制作工具开发

1. 需求信息 1.1 需求背景 讲师们在制作视频的过程中&#xff0c;发现录制课程比较麻烦&#xff0c;要保证环境安静&#xff0c;保证录制过程不出错&#xff0c;很容易反复重复录制&#xff0c;为了解决重复录制的工作量&#xff0c;想通过 ai 课程制作工具&#xff0c;来解决…

数据轻松上云——Mbox边缘计算网关

随着工业4.0时代的到来&#xff0c;工厂数字化转型已成为提升生产效率、优化资源配置、增强企业竞争力的关键。我们凭借其先进的边缘计算网关与云平台技术&#xff0c;为工厂提供了高效、稳定的数据采集与上云解决方案。本文将为您介绍Mbox边缘计算网关如何配合明达云平台&…

【CS常见问题】你用的是VS2019,最高支持.NET5.0,但是项目将.NET6.0设为目标无法运行,怎么办?

.NET版本问题 报错示例报错分析最简单的方法步骤 报错示例 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标&#xff0c;或使用支持 .NET 6.0 的 .NET SDK 版本。 ABFview C:\x…

◇【论文_20150225】 DQN_2015(nature) 〔Google DeepMind〕

整理代码 1&#xff1a;DQN CartPole_v1.ipynb https://www.nature.com/articles/nature14236 Human-level control through deep reinforcement learning 文章目录 摘要主体&#xff1a;要做什么 如何做的 要点keypoints实验 与 评估2 个指标和 各游戏的最好方法比较t-S…

【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

.Net自动更新程序GeneralUpdate,适用于wpf,winfrom,控制台应用

GeneralUpdate是基于.net framwork4.5.2开发的一款&#xff08;c/s应用&#xff09;自动升级程序。 第一个版本叫Autoupdate 有人会奇怪为什么会改名称&#xff0c;稍微解释一下是因为在nuget上有重名的项目再者就是新版本更新功能不仅限于wpf程序的更新。 将更新的核心部分抽…

《Knowledge Perceived Multi-modal Pretraining in E-commerce》中文校对版

文章中文化系列目录 文章目录 文章中文化系列目录摘要CCS概念&#xff1a;关键词&#xff1a;1 引言2 相关工作2.1 多模态预训练2.2 知识图谱增强的预训练模型 3 方法3.1 模态编码层3.1.1 图像初始特征3.1.2 文本初始特征3.1.3 知识的表面形式特征 3.2 模态交互层3.2.1 图像模态…

day02 -- docker

1.docker的介绍 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使…

填充与步幅

一个3x3的卷积核对6X6的图像进行卷积&#xff0c;得到一个4x4的图像 此时&#xff0c;生成图像长或宽 ln-f1 使用过滤器对图像进行卷积出现的问题有&#xff1a; 每次卷积后图像都会变小&#xff0c;当网络过深的时候&#xff0c;就会遗失许多像素 过滤器对边缘像素访问仅一…

基于C#开发游戏辅助工具的Windows底层相关方法详解

开发游戏辅助工具通常需要深入了解Windows操作系统的底层机制&#xff0c;以及如何与游戏进程进行有效交互。本文将基于C#语言&#xff0c;从Windows底层方法的角度来详细讲解开发游戏辅助工具的相关技术和概念。 一、游戏辅助工具的基本概述 游戏辅助工具&#xff0c;通常被称…

网络学习笔记

一、网络的结构与功能 网络的鲁棒性与抗毁性 如果在移走少量节点后网络中的绝大部分节点仍然是连通的&#xff0c;那么就该网络的连通性对节点故障具有鲁棒性 网络上的动力学 动力系统&#xff1a;自旋、振子或混沌的同步、可激发系统 传播过程&#xff1a;信息传播与拥堵…

git命令使用一览【自用】

git常见操作&#xff1a; git initgit remote add master【分支名字】 gitgits.xxxxx【仓库中获取的ssh链接或者http协议的链接】检查远程仓库是否链接成功。 git remote -v出现以下画面就可以git pull,git push了

可以与 FastAPI 不分伯仲的 Python 著名的 Web 框架

正如你所理解的&#xff0c;任何领域都不可能停止进步&#xff0c;不断使用相同的工具意味着不思进取。这一点在信息技术领域&#xff0c;尤其是网络开发行业非常明显。 关于网络框架&#xff0c;不论是 Django 和 Flask 等传统框架还是 Python 的新型高级框架&#xff0c;一直…

Semantic Kernel进阶:将ChatCompletion(聊天完成)服务添加到你的AI项目(三)

文章目录 Semantic Kernel进阶&#xff1a;将聊天完成服务添加到你的AI项目一、引言二、聊天完成服务的重要性三、基本介绍3.1 创建聊天完成服务3.2 依赖注入方式3.3 创建独立的服务实例 四、实战4.1 检索聊天完成服务4.2 使用聊天完成服务4.2.1 非流式4.2.2 流式 4.3 完整代码…