【C++ Primer Plus习题】12.1

embedded/2024/9/24 6:23:40/

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

这里是引用
在这里插入图片描述

解答:
main.cpp

#include <iostream>
#include "Cow.h"
using namespace std;int main()
{Cow c1;Cow c2("老母牛", "喝奶", 200);Cow c3(c2);c1 = c3;c1.ShowCow();cout << endl;c2.ShowCow();cout << endl;c3.ShowCow();cout << endl;return 0;
}

Cow.h

#pragma once
#include <iostream>
using namespace std;
class Cow
{char name[20];char* hobby;double weight;public:Cow();Cow(const char*nm,const char*ho,double wt);Cow(const Cow &c);~Cow();Cow& operator=(const Cow& c);void ShowCow()const;
};

Cow.cpp

#include "Cow.h"Cow::Cow()
{name[0] = '\0';hobby = NULL;weight = 0;
}
Cow::Cow(const char* nm, const char* ho, double wt)
{if ((strcpy_s(name, 20, nm)))cout << "复制失败原字符太长!" << endl;hobby = new char[strlen(ho)+1];strcpy_s(hobby, strlen(ho) + 1, ho);weight = wt;
}
Cow::Cow(const Cow&c)
{strcpy_s(name,20, c.name);hobby = new char[strlen(c.hobby) + 1];strcpy_s(hobby, strlen(c.hobby) + 1, c.hobby);weight = c.weight;
}
Cow::~Cow()
{delete[] hobby;
}
Cow& Cow::operator=(const Cow& c)
{if (this == &c){return *this;}if (hobby)delete[] hobby;strcpy_s(name, 20, c.name);hobby = new char[strlen(c.hobby) + 1];strcpy_s(hobby, strlen(c.hobby) + 1, c.hobby);weight = c.weight;return *this;
}
void Cow::ShowCow()const
{if (hobby == NULL){cout << "母牛的信息为空!" << endl;return;}cout << "母牛的名字为:" << name << endl;cout << "母牛的嗜好为:" << hobby << endl;cout << "母牛的体重为:" << weight << endl;
}

运行结果:
在这里插入图片描述

考查点:

  • 默认构造函数
    在这里插入图片描述
  • 自定义构造函数
    在这里插入图片描述
  • 拷贝构造函数
    在这里插入图片描述
  • 赋值构造函数
    在这里插入图片描述
  • 动态内存分配
    在这里插入图片描述

注意:

  • strcpy_s复制成功的返回值为0
    在这里插入图片描述

  • strlen是得到字符串不带’\0’的长度,所以我们分配内存时需要加1

    在这里插入图片描述

  • 赋值构造函数返回的是引用用于连等
    在这里插入图片描述

  • 如果对象自己赋值自己就可以直接返回.如果原来指针不为空的需要清除
    在这里插入图片描述

  • 析构函数避免内存泄漏
    在这里插入图片描述

2024年9月7日19:48:10


http://www.ppmy.cn/embedded/109879.html

相关文章

8、值、指针、引用作为参数或返回值

一、作为参数 1、值传递 #include <iostream> using namespace std;void swap(int a, int b) {cout << __FUNCTION__ << "交换前a:" << a << " b:" << b << endl;int tmp a;a b;b tmp;cout << __FUN…

vue3+ant design vue实现文件上传(阿里云oss)~

1、效果图 2、自定义上传 <a-upload v-model:file-list"fileList" name"导入员工" action"" :customRequest"upDown" :beforeUpload"beforeUpload" :onChange"handleChange" remove"removeFile" ac…

【编程基础知识】Spring过滤器、拦截器、AOP区别

一、过滤器: 过滤器拦截的是URL&#xff08;HTTP请求&#xff0c;一次请求包含了请求和响应&#xff09; Spring中自定义过滤器&#xff08;Filter&#xff09;一般只有一个方法&#xff0c;返回值是void&#xff0c;当请求到达web容器时&#xff0c;会探测当前请求地址是否配…

【HarmonyOS】头像圆形裁剪功能之手势放大缩小,平移,双击缩放控制(三)

【HarmonyOS】头像裁剪之手势放大缩小&#xff0c;平移&#xff0c;双击缩放控制&#xff08;三&#xff09; 一、DEMO效果图&#xff1a; 二、开发思路&#xff1a; 使用矩阵变换控制图片的放大缩小和平移形态。 通过监听点击手势TapGesture&#xff0c;缩放手势PinchGes…

云服务器部署DB-GPT项目

本文收录于《DB-GPT项目》专栏&#xff0c;专栏总目录&#xff1a; 点击这里。 文章目录 项目介绍 一、登录云服务器 1. 进入控制台 2.点击容器实例&#xff08;点数字&#xff09; 二、创建容器实例 1. 等待容器实例创建好&#xff0c;创建好的容器实例如下&#xff1a;…

[含视频和源码]CRUD的最佳实践,联动前后端,包含微信小程序,API,HTML等(三)

关说不练假把式&#xff0c;在上一&#xff0c;二篇中介绍了我心目中的CRUD的样子 基于之前的理念&#xff0c;我开发了一个命名为PasteTemplate的项目&#xff0c;这个项目呢后续会转化成项目模板&#xff0c;转化成项目模板后&#xff0c;后续需要开发新的项目就可以基于这…

阿里云镜像报错 [Errno 14] HTTP Error 302 - Found 问题解决记录

1、问题背景和解决思路 在本地安装 CentOS7 后&#xff0c;网络已调通可正常上网&#xff0c;但切换阿里云镜像后&#xff0c;使用 yum 安装软件时出现 “[Errno 14] HTTPS Error 302 - Found Trying other mirror.” 报错&#xff0c;原因是 yum 源配置问题。给出了详细的解决…

SQL优化(二)统计信息

收集统计信息 数据库的统计信息非常重要&#xff0c;如果没有正确地收集表的统计信息&#xff0c;或者没有及时地更新表的统计信息&#xff0c;SQL就有可能走错执行计划&#xff0c;也就会出现性能问题。 统计信息主要分为表的统计信息、列的统计信息、索引的统计信息、系统的…