【期末不挂科-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.hqwc.cn/news/345408.html

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

相关文章

公司官网,选全站定制还是模板建站?

最近更新了公司网站&#xff0c;总算了了一件大事。 虽然很久以前也做网站&#xff0c;但随着技术的发展&#xff0c;以前经常用的dreamwaver、table等形式&#xff0c;不知道被升级了多少代。现在前端同事说起的各种架构&#xff0c;对我来说是云里雾里。只能看懂一点点。 这…

操作系统-操作系统的特征(并发 共享 虚拟 异步 之间关系)

文章目录 总览操作系统的特征-并发操作系统的特征-共享并发和共享的关系操作系统的特征-虚拟操作系统的特征-异步小结 总览 操作系统的特征-并发 并行&#xff1a;同时做多个事件 并发&#xff1a;同一个时刻只有一个事件&#xff0c;但会切换事件&#xff0c;所以宏观上可能做…

VASP结合vaspkit+ShengBTE计算热电优值(一)

电导率σ&#xff0c;塞贝克系数S的计算&#xff1a; 使用vaspkit计算处对应的物理量&#xff0c;具体流程为&#xff1a; 准备好计算的材料对应的POSCAR。如果是二维材料可以使用vaspkit 的921或923功能对二维材料POSCAR进行标准化。进行结构优化。使用 vaspkit-681命令生成高…

仿真验证方法(3)——物理验证

目录 一、物理验证的分类 二、DRC 2.1 设计规则 2.2 规则示例 2.3 线宽违例 2.4 间距违例 2.5 交叠违例 三、金属覆盖图形密度检查 四、天线比率检查 4.1 起因 4.2 计算 4.3 改进 五、LVS检查 六、物理验证常用的EDA工具 七、总结 一、物理验证的分类 对于物理验…

NULL是什么?

NULL是一个编程术语&#xff0c;通常用于表示一个空值或无效值。在很多编程语言中&#xff0c;NULL用于表示一个变量或指针不引用任何有效的对象或内存位置。 NULL可以看作是一个特殊的值&#xff0c;表示缺少有效的数据或引用。当一个变量被赋予NULL值时&#xff0c;它表示该变…

PHP在线文档管理系统源码

PHP在线文档管理系统源码 系统功能与介绍 在数据持续、快速增长背景下&#xff0c;企业面临海量非结构化数据处理需求&#xff0c;企业现有架构 通常无法应对海量非结构化数据的管理与应用。 支持私有化部署&#xff0c;完全内网环境下也可正常使用。 Windows、Linux、Mac等全平…

flutter 打包安卓apk 常用配置

打包之前需要先不配置不然会报错 Execution failed for task ‘:app:mergeReleaseResources’. APP目录下的build.gradleaaptOptions.cruncherEnabled falseaaptOptions.useNewCruncher false如图 配置targetSdkVersion 、minSdkVersion 在android/app/src目录下的build.…

微信商家转账到零钱,既能单笔又能批量,支持多商户管理

大家好&#xff0c;我是小悟 微信商家转账到零钱的功能大家应该都熟悉吧&#xff0c;为了满足商家向用户微信零钱转账的需求&#xff0c;微信支付推出【商家转账到零钱】服务&#xff0c;方便商户可以一次向单个或多个用户的微信零钱转账。 商家转账到零钱为商户提供了简便、…

小学生练字神器,在线字帖生成器网站源码

源码介绍 帮助小学生规范汉字书写&#xff0c;提高汉字书写水平&#xff0c;在线小学生练字神器&#xff01;它不仅功能强大&#xff0c;而且完全免费&#xff0c;是每个小学生必备的练字工具。 海量字库&#xff1a;收录9574个常用汉字&#xff0c;满足小学生的学习需求。多…

分布式系统架构设计之分布式消息队列的实际应用场景分析以及未来展望

一、分布式消息队列的实际应用场景 随着企业业务的不断发展和数据量的持续增长&#xff0c;分布式消息队列已经成为了许多系统中不可或缺的一部分。它提供了异步通信、流量削峰、数据缓冲等功能&#xff0c;为构建高并发、高可用、可扩展的系统提供了有力的支持。本部分会通过…

MySQL8.0安装(Linux - centos)

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

文件操作(一)

目录 一.什么是文件 1.程序文件和数据文件 2.文件名 3&#xff0c;文本文件和二进制文件 二.文件的打开和关闭 1.流和标准流 2.文件指针 3.文件的打开与关闭 三.结尾 一.什么是文件 在我们学习文件操作之前我们先了解一下什么是文件&#xff1f;以及文件为什么使用文件…