1.30号c++

浅拷贝和深拷贝(重点)

1> 每个类中系统都会提供一个默认的拷贝构造函数,如果程序员显性定义出拷贝构造函数,则系统取消默认提供。

2> 系统提供的拷贝构造函数,是将一个类对象的所有数据成员给另一个对象的所有数据成员初始化的。该拷贝构造函数称为浅拷贝。

class Stu
{
private:
    string name;
    int id;
    double *score;
public:

 //拷贝构造函数 深拷贝
    Stu(const Stu &other):name(other.name),id(other.id),score(new double(*(other.score)))
                                                // double *score = new double(*(other.score))
    {
        cout <<"Stu::拷贝构造函数" << endl;
    }

拷贝赋值函数

用一个类对象给另一类对象进行赋值操作

本质:运算符重载

格式

函数名:operator=

返回值:自身的引用

参数:同类的类对象

访问权限:一般为public

类名 &operator=(const 类名&other)
{
    函数体内容;
}

 //拷贝赋值函数
    Stu &operator=(const Stu &other)
    {
        //避免自己给自己赋值
        if(this != &other)
        {
            name = other.name;
            age = other.age;
        }


        cout << "Stu:拷贝赋值函数" << endl;
        return *this;
    }

1> 每个类中系统都会提供一个默认的拷贝赋值函数,功能是将一个类对象的所有数据成员赋值给另一个类对象的所有数据成员,如果程序员显性定义出拷贝赋值函数,那么系统取消默认提供。

2>拷贝赋值函数也存在深浅拷贝问题,系统提供的可以称为浅拷贝,深拷贝将拷贝赋值函数(拷贝构造函数)显性定义出来,将有指针成员,自己申请一片空间,再将另一个对象指针指向空间里的值,复制到刚刚申请的空间中去。

匿名对象

没有名字的对象

格式

类名();

作用

1> 用匿名对象给有名对象初始化

2> 用匿名对象给对象数组初始化

3> 用匿名对象作为函数的参数使用

友元

可以让一些函数或者一些类去访问另一个类的私有数据成员。

种类

全局函数做友元

类做友元

成员函数做友元

关键字

friend

总结:

1> 不要过度的使用友元,会降低封装性,破坏封装性。

2> 友元不具有交互性、传递性、继承性。

常成员函数和常对象(const)

常成员函数

常成员函数不能对数据成员做修改操作。

注意

一个类中,常成员函数与普通成员函数同名,不是重复定义,而是重载关系,主要原因:this指针类型不同。

常对象

常对象表示该对象的数据成员不能被改变。

格式:

const 类名 对象名;

总结

1> 常对象,只能调用常成员函数,如果没有常成员函数,调动非常成员函数,则报错,原因是非常成员函数可以改变数据成员。

2> 非常对象,可以调用常成员函数,也可以调用非常成员函数,优先调用非常成员函数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

###C语言程序设计-----C语言学习(8)## 斐波那契数列问题,素数问题,人数分配问题。

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 今天&#xff0c;我们主要分享三个问题如何用C语言去求解&#xff0c;1.斐波…

图片怎么裁剪成想要的尺寸?教你快速图片裁剪的方法

图片怎么裁剪成想要的尺寸&#xff1f;图片裁剪属于我们日常生活中比较常见的图片处理方式了&#xff0c;不管是改变图片打下&#xff0c;还是需要将图片中一些不需要的部分裁减掉&#xff0c;都需要用到这个功能&#xff0c;除了使用软件之外&#xff0c;我们还可以通过在线裁…

【Django自学】Django入门:如何使用django开发一个web项目(非常详细)

测试机器&#xff1a;windows11 x64 python版本&#xff1a;3.11 一、安装Django 安装步骤非常简单&#xff0c;使用pip安装就行 pip install django安装完成之后&#xff0c;python的 Scripts 文件夹下&#xff0c;会多一个 django-admin.exe (管理创建django项目的工具)。…

超声波风速风向传感器的优势及应用

TH-WQX2随着科技的不断发展&#xff0c;传感器技术日益成为众多领域中不可或缺的一部分。其中&#xff0c;超声波风速风向传感器凭借其独特的优势&#xff0c;在气象、能源、环保等领域中发挥着越来越重要的作用。 首先&#xff0c;超声波风速风向传感器无需机械转动部件&#…

【Vue】2-10、Vue 组件

一、组件化开发 组件化开发指的是根据封装的思想&#xff0c;把页面上可重用的 UI 结构封装为组件&#xff0c;从而方便项目的开发和维护。 二、Vue 组件的组成 template&#xff1a;组件的模板结构script&#xff1a;组件的 JavaScript 行为style&#xff1a;组件的样式 &…

Vim实战:使用 Vim实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

C++提取ICO图标(PE文件资源提取)

最近需要写一个提取EXE或者DLL图标资源的功能, 网上找了很久, 要么功能不好用, 最后结果如下: 1.很多是加载为HICON句柄后转换为图片保存, 全损画质..., 2.后来找了个还能用的, 详见 https://github.com/TortoiseGit/TortoiseGit/blob/master/src/Utils/IconExtractor.cpp …

git远程仓库基本操作

目录 gitremote &#xff08;查看远程仓库&#xff09; git remote add [仓库名] [url] git clone [url]&#xff08;克隆远程仓库到本地&#xff09; git push [名][分支名]&#xff08;提交到远程仓库&#xff09;​编辑 git pull [名][分支名]从远程仓库拉取​编辑 注意操作…

opencv学习 特征提取

内容来源于《opencv4应用开发入门、进阶与工程化实践》 图像金字塔 略 拉普拉斯金字塔 对输入图像进行reduce操作会生成不同分辨率的图像&#xff0c;对这些图像进行expand操作&#xff0c;然后使用reduce减去expand之后的结果&#xff0c;就会得到拉普拉斯金字塔图像。 …

Java 代理详解

Java 代理详解 文章目录 Java 代理详解1. 代理模式2. 静态代理3. 动态代理3.1. JDK 动态代理机制3.1.1. 介绍3.1.2. JDK 动态代理类使用步骤3.1.3. 代码示例 3.2. CGLIB 动态代理机制3.2.1. 介绍3.2.2. CGLIB 动态代理类使用步骤3.2.3. 代码示例 3.3. JDK 动态代理和 CGLIB 动态…

SD-WAN和专线混合组网:企业出海网络解决方案

目前&#xff0c;有很多国内企业涉足海外业务&#xff0c;如跨境电商、游戏、社交网络、区块链等。都会使用海外服务器。同时&#xff0c;这些企业在国内还有自己的机房&#xff0c;IDC或者使用国内其他云厂商的机房。如果他们想要相互通信或传输数据该怎么办&#xff1f;在成本…

最小步数模型

AcWing 1107. 魔板 #include <bits/stdc.h> using namespace std;char g[2][4]; const int N 10; unordered_map<string, pair<char, string> > pre; unordered_map<string, int> d;void Set(string s) {for(int i0; i<4; i) g[0][i] s[i];for(in…

骨传导如何使用,跟传统耳机有什么不同吗?

骨传导耳机的使用方法跟传统耳机是一样的&#xff0c;都是通过蓝牙连接来使用&#xff0c;不同的是&#xff0c;有些骨传导耳机自带内存&#xff0c;可以当做MP3来使用&#xff01; 此外&#xff0c;骨传导耳机的佩戴方式和传声方式跟传统耳机也有所不同&#xff0c;首先骨传导…

2024年美赛赛前复习大纲

CC数模-优质解答 引言 数学建模是一个将数学理论和方法应用于解决现实世界问题的过程。在数学建模比赛中&#xff0c;学生需要运用自己的数学知识和技能&#xff0c;解决给定的复杂问题。这不仅是一次展示自己能力的机会&#xff0c;也是一次学习和成长的过程。随着比赛的临近…

网络安全03---Nginx 解析漏洞复现

目录 一、准备环境 二、实验开始 2.1上传压缩包并解压 2.2进入目录&#xff0c;开始制作镜像 2.3可能会受之前环境影响&#xff0c;删除即可 ​编辑 2.4制作成功结果 2.5我们的环境一个nginx一个php 2.6访问漏洞 2.7漏洞触发结果 2.8上传代码不存在漏洞 2.9补充&#…

elementUI中表单校验的清空校验以及手动校验

this.$refs.表单.clearValidate(),这个可以传入字符串或者字符串数组&#xff0c;字符串对应的是我们自定义的rule里面的属性名&#xff0c;rule的属性名对应的是el-form-item的prop。这个api目前遇到的场景是el-radio切换时v-if展示不同的表单内容&#xff0c;但是当有校验提示…

力扣931. 下降路径最小和

动态规划 思路&#xff1a; 假设 dp[i][j] 为坐标 (i, j) 的路径最小和&#xff1b;则 dp[i][j] 上一状态&#xff1a; dp[i - 1][j] &#xff08;上一行正上方&#xff09;dp[i - 1][j - 1]&#xff08;上一行的左侧&#xff09;dp[i - 1][j 1]&#xff08;上一行的右侧&…

9.SELinux

目录 1. 概述 1.1. 概念 1.2. 作用&#xff1a; 1.3. SELinux与传统的权限区别 2. SELinux工作原理 2.1. 名词解释 2.1.1. 主体&#xff08;Subject&#xff09; 2.1.2. 目标&#xff08;Object&#xff09; 2.1.3. 策略&#xff08;Policy&#xff09; 2.1.4. 安全上…

纯静态微信小程序水果商城

首页代码 <view class"container"><!-- 轮播图 --><view class"swiper-container"><swiper class"screen-swiper" indicator-dots"true" circular"true" autoplay"true" interval"300…

穷游网酒店数据采集与可视化分析与实现

摘 要 穷游网酒店数据采集与可视化分析大屏的背景是为了满足用户对酒店数据的需求以及提供数据洞察和决策支持。随着旅游业的快速发展&#xff0c;人们对酒店信息的需求日益增加&#xff0c;而穷游网作为一家专注于旅游信息的网站&#xff0c;拥有丰富的酒店数据资源。 这个大…