首页 > 编程语言 >【C++ Primer Plus习题】12.1

【C++ Primer Plus习题】12.1

时间:2024-09-07 23:23:36浏览次数:13  
标签:const name Cow weight char Plus hobby 习题 Primer

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

问题:

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

解答:
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

标签:const,name,Cow,weight,char,Plus,hobby,习题,Primer
From: https://blog.csdn.net/qq_74047911/article/details/142000964

相关文章

  • C语言程序与设计第四版课后习题 - 1~8章大合集
    前言本文章是一个大合集,按照课后习题的命名方式命名,方便寻找,只需要在目录上点相对应的题号即可在这里插入图片描述第一章课后习题1.1编写一个C程序题目概述:请参照本章例题,编写一个C程序,输出一下信息:*****************************Verygood!*************......
  • 【C++算法全真练习题】迷宫问题
    目录题目描述思路AC解答题目描述‌题目描述‌:‌给定一个二维迷宫,‌其中 0 表示可以走的路,‌1 表示障碍物。‌起点坐标为 (0,0),‌终点坐标为 (m-1,n-1),‌其中 m 和 n 分别是迷宫的行数和列数。‌你需要使用广度优先搜索(‌BFS)‌找到从起点到终点的一条路径......
  • 1.Java基础变量和数据类型练习题
    我写的都是键盘录入,运行没结果,不妨按几下试试 1.输出个人简历packagecom.hz.test01;publicclassZuoye{ publicstaticvoidmain(String[]args){ //inti=0;整形 //byteb=0;字节类型 //shorts=0;短整型 //longl=20l;长整型 //floatf=3.33F;单精度......
  • E31.【C语言】练习:指针运算习题集(上)
    Exercise1求下列代码的运行结果#include<stdio.h>intmain(){ inta[5]={1,2,3,4,5}; int*ptr=(int*)(&a+1); printf("%d",*(ptr-1)); return0;}答案速查:分析:Exercise2 求下列代码的运行结果//在x86环境下//假设结构体的大小是20个字节......
  • mybatis-plus打印完整sql
     importlombok.extern.slf4j.Slf4j;importorg.apache.ibatis.cache.CacheKey;importorg.apache.ibatis.executor.Executor;importorg.apache.ibatis.mapping.BoundSql;importorg.apache.ibatis.mapping.MappedStatement;importorg.apache.ibatis.mapping.Paramet......
  • 字符数组练习题
    1、下列对 C语言字符数组的描述中错误的是( D ) A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.不可以用关系运算符对字符数组中的字符串进行比较D.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值解析:D:不可以在赋值语句中通过赋......
  • java集合基础练习题
    List集合.ArrayList,LinkedList,Vector三者的相同点与不同点?(“Vector”可百度)【面试题】共同点:他们都实现了List接口,意味着他们具有相同的基本操作,如添加、删除、获取元素有序性和可重复性,他们都是有序的,即插入顺序和迭代顺序相同,都允许存储重复的元素都可以动态调整大......
  • 深入探讨 MyBatis-Plus 的 LambdaQueryWrapper (方法使用大全+案例)
    个人名片......
  • 又是经典的约瑟夫环问题plus版本及vector的熟练使用
    目录1.前言2.正文2.1问题2.2解决办法2.2.1思路2.2.2代码实现2.2.3测试结果3.备注1.前言我记得之前第一次遇到这个题目是当时说的是固定的一个数,就是说固定数3个数,显然比这个简单一点,因为动的数据显然更麻烦一点。有兴趣的小伙伴可以先去看之前的那篇博客......
  • elementplus vue3 table表格动态合并单元格
    letcellList:any[]=[]//单元格数组letcount:number=0//计数constcomputeCell=(tableList:any[],name)=>{cellList=[]count=0for(leti=0;i<tableList.length;i++){if(i===0){//先设置第一项cellList.push(1)......