13.1.6

2024-04-11 10:32
文章标签 13.1

本文主要是介绍13.1.6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

练习13.18

定义一个Employee类,它包含雇员的姓名和唯一的雇员证号。为这个类定义默认构造函数,以接受一个标识雇员姓名的string的构造函数。每个构造函数应该通过递增一个static数据成员来生成一个唯一的证号。

解答:

#include <string>
#include <iostream>
using namespace std;
class Employee{
public:string name;static int ID;Employee();Employee(const string&);Employee(Employee &emp) { ++ID; name = emp.name; }string GetName(){ return name; }int GetID(){ return ID; }
};int Employee::ID = 0;Employee::Employee()
{++ID;name = "SB";
}Employee::Employee(const string& nam)
{++ID;name = nam;
}int main()
{Employee E1;cout << E1.GetName() << endl;cout << E1.GetID() << endl;Employee E2("C++!");cout << E2.GetName() << endl;cout << E2.GetID() << endl;Employee E3;E3 = E2;cout << E3.GetName() << endl;cout << E3.GetID() << endl;Employee E4(E2);cout << E4.GetName() << endl;cout << E4.GetID() << endl;return 0;
}
<img src="https://img-blog.csdn.net/20150606155610944" alt="" />
 本实验证明以下几点:
1.类的静态成员 在类内声明,在类外初始化,且一定要初始化,不然运行将出错。
2.合成拷贝构造函数只是 对被拷贝对象的简单复制。本例中去掉自定义的拷贝构造函数后,E3 和 E4 的输出结果将变得相同:在初始化E3的时候 调用默认构造函数,ID+1;但当E4用E2进行合成的拷贝构造时,系统仅是简单的拷贝。没有增加ID的值。

练习 13.1.19

你的Employee类需要定义它自己的拷贝控制成员吗?如果需要,为什么?如果不需要,为什么?实现你认为Employee需要的拷贝控制成员。

解答:

需要拷贝构造,上述分析已经说明。


练习13.20

解释当我们拷贝、赋值或销毁TextQuery和QueryResult类(参见12.3节,430页)对象时会发生什么。

解答:

文本查询程序尚未学习,此题留待将来


练习13.22

假定我们希望HasPtr的行为想一个值。即,对于对象所指向的string成员,每个对象都有一份自己的拷贝。我们将在下一节介绍拷贝控制成员的定义。但是,你已经学习了定义这些成员所需要的所有知识。在继续学习下一章之前,为HasPtr编写拷贝构造函数和拷贝赋值运算符

解答:

class HasPtr {
public:HasPtr(const string &s = string()) :ps(new string(s)), i(0){}HasPtr operator=(const HasPtr &ori){ps = new string(*(ori.ps));i = ori.i;return *this;}HasPtr(const HasPtr& has){ps = new string(*(has.ps));i = has.i;}string *ps;int i;
};











这篇关于13.1.6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893828

相关文章

opensuse 13.1 virtualbox error:This parameter must be a string or Unicode object

这个问题是一个bug,解决方法之一是在zypper中使用uninstall virtualbox,zypper in virtualbox-qt ,virtualbox-dev* 在 yast中把自己当前的用户加入到virtualusers用户组中,relogin即可(或者重启)

XP单机版安装金蝶K3的13.1版本,金蝶K3Wise安装步骤,成功安装

在我们安装金蝶K3时往往会出现各种报错,主要是因为我们的Windows Xp操作系统是Ghost版本,或者是windows XP HOME或者是精简版,因此某些组件在系统里没有,导致我们安装金蝶K3时经常出错报错。本文章就是主要结合实际安装过程,总结了一些问题的解决办法。如果您按照本流程进行安装会比较流畅。 下载一个版本的Windows XP镜像,重装电脑。

13.1.k8s集群的七层代理-ingress资源(进阶知识)

目录 一、ingress概述 1.前言 2.问题 3.ingress资源 二、ingress-nginx是什么 三、ingress-nginx 实现原理 四、部署ingress-nginx 1.获取部署文件 ingress-nginx.yaml 2.部署ingress-nginx 3.检查部署是否成功 五、编写使用Ingress样例代码 1.Ingress资源对象yam

13.1.资源清单的管理工具-helm

目录 一、helm的介绍 1.helm的价值概述 2.helm的关键名词 二、安装部署helm 1.解压安装包并设置全局命令 2.添加命令补全 三、使用helm部署服务管理 1.使用helm创建chart 1.1创建工作目录  1.2.helm创建chart 2.响应式创建名称空间 3.安装chart到名称空间 4.使用helm命令查看名称空间下的资源 5.修改服务的版

13.1 Go 反射(Reflection)

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO系列: 记录博主学习GO语言的笔

C++唯一智能指针(make_unique/unique_ptr/reset/release/get/13.1)

使用make_unique获取一个智能指针,智能指针的类型是unique_ptr // a不是数组,小括号里的就是值std::unique_ptr<int> a = std::make_unique<int>(666);std::cout << *a << std::endl;std::cout << a << std::endl;std::cout << "--------------

13.1基于TCP的Socket网络通信及Demo

目录 一、服务器端 二、客户端 三、遇到连接不上的问题解决办法 四、加入等待超时处理 一、服务器端         在PC上运行,仅仅建立ServerSocket监听,并使用Socket获取输出流输出。该ServerSocket将会一直监听,等待客户端程序的连接。 //基于TCP的Socket网络通信例程 服务器端public class SimpleServer {publi

openSUSE 13.1安装配置日记

这学期刚开学的时候,在刚买的移动硬盘上安装了openSUSE。配置好系统后,本来想在第一周周末整理一下安装配置日记,但苦于 没有时间,就把事情拖到的这个周末,现在总算有时间整理了。 1、禁用官方源和DVD光盘源,启用中国大陆源 使用DVD光盘安装好openSUSE 13.1之后,软件安装源中默认存在一个名称为”openSUSE-13.1-1.10″的软件源,这个源的URL实际上是指

13.1 QQ邮箱

1. 邮箱发送 2. 准备工作 3. 整合SpringBoot 3.1 配置 依赖引入 <!-- 邮件服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency

吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.1-13.2

目录 第 8 周 13、 聚类(Clustering)13.1 无监督学习:简介 第 8 周 13、 聚类(Clustering) 13.1 无监督学习:简介 在这个视频中,我将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们将要让计算机学习无标签数据,而不是此前的标签数据。 那么,什么是非监督学习呢?在课程的一开始,我曾简单地介绍过