【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】

前言

大家好吖,欢迎来到 YY 滴C++复习系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • 更加详细和全面的C++知识讲解——>可关注 YY的《C++》专栏
  • 此系列主打期末复习速过,一些基本知识点会略过(例如虚函数具体原理等等)

目录

  • 一、简述题
    • 1. 简述构造函数和析构函数分别有什么作用?
    • 2. 公有成员和私有成员的区别是什么?
    • 3. 什么是拷贝构造函数?它何时被调用?
  • 二、代码题
    • 例题1:
    • 例题2:
    • 例题3:
    • 例题4:
    • 例题5:
    • 例题6:
    • 例题7:

一、简述题

1. 简述构造函数和析构函数分别有什么作用?

  • 构造函数用于在创建对象时初始化对象的数据成员,为对象分配内存空间,并执行其他必要的初始化操作。它通常用于初始化对象的状态,设置初始值,分配资源等。

  • 析构函数用于在对象被销毁时执行一些清理工作,比如释放对象占用的资源,关闭文件,断开连接等。它通常用于在对象生命周期结束时执行一些必要的清理操作,以确保对象的资源得到正确释放。

2. 公有成员和私有成员的区别是什么?

  • 公有成员和私有成员是面向对象编程中的两种访问控制权限。

  • 公有成员是指在类的外部和派生类中都可以被访问的成员。这意味着任何地方都可以访问和修改公有成员。公有成员通常用于提供接口和功能,以便外部代码可以与类进行交互。

  • 私有成员是指只能在类的内部访问的成员,外部代码无法直接访问或修改私有成员。私有成员通常用于隐藏类的实现细节,以防止外部代码直接访问和修改内部数据,从而提高类的封装性和安全性。

  • 总的来说,公有成员提供了对外部代码的接口,而私有成员隐藏了类的实现细节,使得类的内部状态和行为对外部代码不可见。

3. 什么是拷贝构造函数?它何时被调用?

  • 拷贝构造函数是一种特殊的构造函数,用于创建一个新对象并将其初始化为另一个同类对象的副本。它的函数签名通常是类名(const 类名
    &obj),其中参数是对同类对象的引用。

拷贝构造函数通常在以下情况下被调用:

  1. 当使用一个对象来初始化另一个对象时,会调用拷贝构造函数。
  2. 当把一个对象作为参数传递给函数,以值传递的方式传递对象时,也会调用拷贝构造函数。
  3. 当从函数返回一个对象时,也可能会调用拷贝构造函数。
  • 拷贝构造函数的作用是创建一个新的对象,并将其初始化为另一个对象的副本,以确保在这些情况下对象的数据成员得到正确复制,而不是简单地复制对象的地址。

二、代码题

例题1:

  • 声明一个名为Tree的类,它有数据成员age(树龄),有成员函数grow(int year),用于计算经过year这么多年的成长后树的最新年龄,以及GetAge(),用于提取树的年龄,并定义构造函数用于初始化tree对象的属性
class Tree {
private:int age;  // 树龄public:// 构造函数,初始化树的年龄Tree(int initialAge) : age(initialAge) {}// 成长函数,计算经过year年后的树的最新年龄void grow(int years) {age += years;}// 获取树的年龄int getAge() {return age;}
};

例题2:

  • 创建一个类,模仿基本数据类型的部分功能,将这个类命名为Integer(注意,这和表示整数类型的int大小写不同)。Integer类拥有整型数据成员value(数值),还有一些成员函数,比如显示一个Integer对象的值,以及将两个Integer对象相加。要求定义构造函数用于初始化Integer对象的值
#include <iostream>class Integer {
private:int value;  // 整型数值public:// 构造函数,用于初始化整数值Integer(int v) : value(v) {}// 显示Integer对象的值void displayValue() {std::cout << "The value is: " << value << std::endl;}// 将两个Integer对象相加Integer add(const Integer& other) {return Integer(value + other.value);}
};

例题3:

  • 创建一个类,模仿基本数据类型的部分功能,将这个类命名为Integer(注意,这和表示整数类型的int大小写不同)。Integer类拥有整型数据成员value(数值),还有一些成员函数,比如显示一个Integer对象的值,以及将两个Integer对象相加。要求定义构造函数用于初始化Integer对象的值
#include <iostream>class Integer {
private:int value;  // 整型数值public:// 构造函数,用于初始化整数值Integer(int v) : value(v) {}// 显示Integer对象的值void displayValue() {std::cout << "The value is: " << value << std::endl;}// 将两个Integer对象相加Integer add(const Integer& other) {return Integer(value + other.value);}
};

例题4:

  • 考虑几何图形圆,它有属性:半径,行为:获取半径值,计算周长,计算面积,输出圆的相关信息。根据上述分析,请声明并实现一个Circle类
#include <iostream>class Circle {
private:double radius;  // 半径public:// 构造函数,用于初始化半径Circle(double r) : radius(r) {}// 获取半径值double getRadius() {return radius;}// 计算周长double calculatePerimeter() {return 2 * 3.14159 * radius;}// 计算面积double calculateArea() {return 3.14159 * radius * radius;}// 输出圆的相关信息void printInfo() {std::cout << "Circle Information:" << std::endl;std::cout << "Radius: " << radius << std::endl;std::cout << "Perimeter: " << calculatePerimeter() << std::endl;std::cout << "Area: " << calculateArea() << std::endl;}
};

例题5:

  • 编写一个程序,设计一个类Score用于统计一个班的学生成绩,其中定义一个静态数据成员totalScore存储总分,一个静态成员函数GetTotalScore( )实现对该静态数据成员的访问
#include <iostream>class Score {
private:static int totalScore;  // 静态数据成员,存储总分public:// 静态成员函数,实现对静态数据成员的访问static int GetTotalScore() {return totalScore;}
};// 静态数据成员的定义和初始化
int Score::totalScore = 0;int main() {// 假设有一些学生成绩需要统计int scores[] = {80, 90, 75, 85, 95};// 统计总分for (int i = 0; i < 5; i++) {Score::totalScore += scores[i];}// 输出总分std::cout << "Total score: " << Score::GetTotalScore() << std::endl;return 0;
}

例题6:

  • 创建一个名为Time的类,它包括分别表示小时、分钟和秒的int类型的数据成员以及两个构造函数,一个构造函数将这个数据初始化为0,另一个将它初始化为一个固定的值。另有一成员函数将时间以11:59:59的格式显示在屏幕上。
#include <iostream>class Time {
private:int hours;int minutes;int seconds;public:// 默认构造函数,将时间初始化为0Time() : hours(0), minutes(0), seconds(0) {}// 带参数的构造函数,将时间初始化为给定值Time(int h, int m, int s) : hours(h), minutes(m), seconds(s) {}// 显示时间在屏幕上void displayTime() {std::cout << "Time: " << hours << ":" << minutes << ":" << seconds << std::endl;}
};
  • 构造函数用缺省值的形式来写
#include <iostream>class Time {
private:int hours;int minutes;int seconds;public:// 默认构造函数,将时间初始化为0Time(int h = 0, int m = 0, int s = 0) : hours(h), minutes(m), seconds(s) {}// 显示时间在屏幕上void displayTime() {std::cout << "Time: " << hours << ":" << minutes << ":" << seconds << std::endl;}
};

例题7:

  • 编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的父类。试编程实现,并将编写的代码贴到原代码处。
#include <iostream>
#include <string>// 父类 Person
class Person {
protected:int id;std::string name;public:void inputPersonData() {std::cout << "Enter ID: ";std::cin >> id;std::cout << "Enter Name: ";std::cin >> name;}void displayPersonData() {std::cout << "ID: " << id << std::endl;std::cout << "Name: " << name << std::endl;}
};// 子类 Student
class Student : public Person {
private:int classNumber;int score;public:void inputStudentData() {inputPersonData();std::cout << "Enter Class Number: ";std::cin >> classNumber;std::cout << "Enter Score: ";std::cin >> score;}void displayStudentData() {displayPersonData();std::cout << "Class Number: " << classNumber << std::endl;std::cout << "Score: " << score << std::endl;}
};// 子类 Teacher
class Teacher : public Person {
private:std::string title;std::string department;public:void inputTeacherData() {inputPersonData();std::cout << "Enter Title: ";std::cin >> title;std::cout << "Enter Department: ";std::cin >> department;}void displayTeacherData() {displayPersonData();std::cout << "Title: " << title << std::endl;std::cout << "Department: " << department << std::endl;}
};int main() {Student student;Teacher teacher;std::cout << "Enter Student Data:" << std::endl;student.inputStudentData();std::cout << std::endl;std::cout << "Enter Teacher Data:" << std::endl;teacher.inputTeacherData();std::cout << std::endl;std::cout << "Student Data:" << std::endl;student.displayStudentData();std::cout << std::endl;std::cout << "Teacher Data:" << std::endl;teacher.displayTeacherData();return 0;
}

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

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

相关文章

GitHub SSH 身份验证原理

HTTPS 跟 SSH 方式连接远程仓库的区别是什么&#xff1f; HTTPS和SSH是两种不同的协议&#xff0c;用于连接到远程Git仓库。它们的主要区别在于身份验证方式和连接方式&#xff1a; HTTPS&#xff1a;使用用户名和密码或者个人访问令牌&#xff08;Personal Access Token&…

SQL-修改数据

目录 DML-修改数据 删除数据 总结 &#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f4dc;其他专栏&#xff1a;…

python爬虫实战(8)--获取虎pu热榜

1. 需要的类库 import requests from bs4 import BeautifulSoup import pandas as pd2. 请求地址 def fetch_data():url "https://bbs.xxx.com/" # Replace with the actual base URLresponse requests.get(url)if response.status_code 200:return response.c…

【python 的各种模块】(9) 在python使用PIL,即pillow模块

目录 1 导入PIL模块&#xff08;pillow&#xff09; 1.1 导入PIL模块 1.1.1 可用的导入形式 1.1.2 常用的导入形式 1.1.3 PIL下面的常用子模块 2 用 PIL读入&#xff0c;生成和显示图片 2.1 用 PIL.Image.open() 可以读入图片 2.2 用PIL.Image.new() 生成新图片 2.3 …

如何从多个文件夹里各提取相应数量的文件放一起到新文件夹中形成多文件夹组合

首先&#xff0c;需要用到的这个工具&#xff1a; 百度 密码&#xff1a;qwu2蓝奏云 密码&#xff1a;2r1z 说明一下情况 文件夹&#xff1a;1、2、3里面分别放置了各100张动物的图片&#xff0c;模拟实际情况的各种文件 操作&#xff1a;这里演示的是从3个文件夹里各取2张图…

移动安全-certutil

1 需求 需求1&#xff1a;获取应用文件的MD5 CertUtil -hashfile 文件路径 MD5 2 语法 C:\>certutil -?动词:-dump -- 转储配置信息或文件-dumpPFX -- 转储 PFX 结构-asn -- 分析 ASN.1 文件-decodehex -- 解码十六进制编码的…

MySQL 按日期流水号 条码 分布式流水号

有这样一个场景&#xff0c;有多台终端&#xff0c;要获取唯一的流水号&#xff0c;流水号格式是 日期0001形式&#xff0c;使用MySQL的存储过程全局锁实现这个需求。 以下是代码示例。 注&#xff1a;所有的终端连接到MySQL服务器获取流水号&#xff0c;如果获取到的是 “-1”…

软件测试|好用的pycharm插件推荐(二)—— JSON Parser

简介 PyCharm是一款强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多插件来增强开发体验。其中一个非常有用的插件是"JSON Parser"&#xff0c;它允许你在PyCharm中轻松解析和处理JSON数据。在本文中&#xff0c;我们将详细介绍如何安…

RTMO 姿态识别

RTMO 姿态识别 预测示例: # Copyright (c) OpenMMLab. All rights reserved. from argparse import ArgumentParser from typing import Dictfrom mmpose.apis.inferencers import MMPoseInferencer, get_model_aliasesfilter_args = dict(bbox_thr=0.3, nms_thr=0.3, pose_…

文件操作(与缓存相关的)相关笔记

与缓存相关就是一行一行进行读写&#xff0c;或者直接读写整个文件 1.BufferedInputStream&#xff0c;字节 1.构造方法&#xff1a; new BufferedInputStream(FileInputStream对象)&#xff1b; 2.读取文件 除了基础的read方法之外还有一个readAlllBytes方法可以返回这个文件…

linux手动安装 vscode-server

适用场景 很多时候&#xff0c;我们需要在本机&#xff08;比如windows&#xff09;通过remote ssh访问远程服务器&#xff08;一般是ubuntu&#xff09;&#xff0c;但经常出现 vscode 一直连不上远程服务器的情况&#xff0c;看一下 log&#xff1a; 这个log表示远程服务器…

python的猴子补丁(Monkey Patching)

1. 什么是猴子补丁 Python是一种典型的动态脚本语言。它不仅具有 动态类型(dynamic type) &#xff0c;而且它的 对象模型(object model) 也是动态的。Python的类是可变的(mutable)&#xff0c;方法(methods)只是类的属性(attributes)&#xff1b;这允许我们在 运行时(run tim…

助力智能密集人群检测计数,基于YOLOv8全系列模型【n/s/m/l/x】开发构建通用场景下密集人群检测计数识别系统

在一些人流量比较大的场合&#xff0c;或者是一些特殊时刻、时段、节假日等特殊时期下&#xff0c;密切关注当前系统所承载的人流量是十分必要的&#xff0c;对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段&#xff0c;本文的主要目的是想要…

php物联网平台云监控WEB设备iot管理后台源码带文字安装教程

物联网平台云监控WEB设备iot管理后台源码带文字安装教程 运行环境 服务器宝塔面板 PHP 5.6 Mysql 5.6 Linux Centos7以上 物联网监控平台&#xff0c;含有web平台、APP代码、硬件短代码&#xff0c;可使用Wifi、2G、4G硬件模块。 具有数据查看、集中显示、报警功能&#xff0c;…

FPGA图形化前仿真

引言 上文提到电路连接如下&#xff1a; 期望结果如下&#xff1a; 一.创建wrapper文件 1.创建HDL wrapper&#xff1b; 2.要是该文件不是顶层&#xff08;set as top&#xff09;&#xff0c;则需要把文件置于顶层 二.综合 1.综合的目的主要是排除语法的错误&#xff1b; 2.内…

重磅!GPT Store正式上线!

GPT Store来了。根据公告&#xff0c;用户可以在ChatGPT Plus、Team和Enterprise中访问、分享和销售使用OpenAI技术创建的AI模型。 而且&#xff0c;GPT Store确实有“推荐”机制&#xff1a;“特色GPTs”&#xff0c;商店会每周更新一批官方推荐的GPTs。另外OpenAI提供了“举报…

【sqlite3】sqlite3在linux下使用sqlitebrowser工具实现数据可视化

sqlite3在linux下使用sqlitebrowser工具实现数据可视化 1. ### install sqlitebrowser 1. ### install sqlitebrowser 安装指令 sudo apt-get install sqlitebrowser通过工具打开数据库 sqlitebrowser stereo.db打开效果

1.6计算机网络的性能指标

1.6计算机网络的性能指标 常用的计算机网络的性能指标有7个&#xff1a;速率、带宽、吞吐量、时延、往返时间、利用率、丢包率 1.6.1速率 计算机发送的信号是以二进制数字形式的。一个二进制数字就是一个比特(bit&#xff0c;binary digit)字节:Byte&#xff0c;1Byte8bit(1…

数据结构(三)堆和哈希表

目录 哈希表和堆什么是哈希表 &#xff1f;什么是堆 &#xff1f;什么是图 &#xff1f;案例一&#xff1a;使用python实现最小堆案例二 &#xff1a; 如何用Python通过哈希表的方式完成商品库存管理闯关题 &#xff08;包含案例三&#xff1a;python实现哈希表&#xff09; 本…

强化学习求解TSP(八):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于奖励的决策问题。它是一种无模型的学习方法&#xff0c;通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策&#xff0c;该函数表示在给定状态下采取某个动作所获…