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

news2024/9/27 23:28:02

前言

大家好吖,欢迎来到 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:
    // 默认构造函数,将时间初始化为0
    Time() : 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:
    // 默认构造函数,将时间初始化为0
    Time(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.coloradmin.cn/o/1379683.html

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

相关文章

vi/vim 编辑器 --基本命令

1 vi/vim编辑器介绍 vi 是visual interface 的简称&#xff0c;是Linux中最经典的文本编辑器 vim是vi的加强版。兼容了vi的所有指令&#xff0c;不仅能编辑文本&#xff0c;而且具有shell程序编辑的功能&#xff0c;可以通过不同颜色的字体辨别语法的正确性&#xff0c;极大…

js中try...catch捕捉错误

文章目录 一、前言二、场景2.1、setTimeout2.2、Promise 三、最后 一、前言 说到try...catch都觉得非常熟悉了&#xff0c;不就是用来捕捉代码块中的错误嘛&#xff0c;平时也用得比较多的 二、场景 try...catch只能捕捉到同步执行代码块中的错误 2.1、setTimeout try {setT…

淘宝商家实现批量上货API接口调用接入说明(淘宝开放平台免申请接入)

API接入详细步骤&#xff1a; 第一步&#xff1a;在淘宝开放平台中选择接口塡写应用申报递交给我司&#xff0c;确认接口是否都有。 第二步&#xff1a;确认接口都有&#xff0c;需交1000元进行测试&#xff0c;可以测试三天&#xff0c;测试数据符合淘宝开放平台接口参数说明&…

Java常用的加密技术

项目结构&#xff1a; 总体代码&#xff1a; package VirtualUtils; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.*; import java.security.sp…

WebServer 跑通/运行/测试(详解版)

&#x1f442; 椿 - 沈以诚 - 单曲 - 网易云音乐 目录 &#x1f382;前言 &#x1f33c;跑通 &#xff08;1&#xff09;系统环境 &#xff08;2&#xff09;克隆源码 &#xff08;3&#xff09;安装和配置 Mysql &#xff08;4&#xff09;写 sql 语句 &#xff08;5&…

文件操作(一)

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

【Effective Objective - C】—— 熟悉Objective-C

【Effective Objective - C】—— 熟悉Objective-C 熟悉Objective-C1.oc的起源消息和函数的区别运行期组件和内存管理要点&#xff1a; 2.在类的头文件中尽量少引入其他头文件向前声明要点&#xff1a; 3.多使用字面量语法&#xff0c;少用与之等价的方法字符串字面量字面数值字…

小程序基础学习(导航栏组件)

一&#xff0c;创建组件 二&#xff0c;组件传入参数 三&#xff0c;组件接收参数 四&#xff0c;组件渲染参数 五&#xff0c;组件代码 <!--components/daoHangLan/daoHangLan.wxml--> <view class"titles"><block wx:for"{{titles}}"…

第 3 章 Keepalived 双机热备

技能展示&#xff1a; 会构建双机热备系统 会构建 LVSHA 高可用群集 在这个高度信息化的 IT 时代&#xff0c;企业的生产系统、业务运营、销售和支持&#xff0c;以及日常管理等环节越来越依赖于计算机信息和服务&#xff0c;对高可用&#xff08;HA&#xff09;技术的应用需求…

Python3.5如何打包编译

python3.5怎么打包编译 问题&#xff1a;用Python开发的小工具有时需要编译打包为Windows(*.exe)、Mac等操作系统下的可执行性文件以供非程序员使用。 解决方案&#xff1a; 一、py2exe 目前只支持到Python3.4&#xff0c;暂不支持Python3.5 二、PyInstaller 安装&#x…

C#人力资源管理系统源码

C#人力资源管理系统源码 源码描述&#xff1a; 该系统利用asp.net中mvc,linq搭建开发&#xff0c; 分权限管理 权限级别分为&#xff1a;管理员&#xff0c;经理&#xff0c;专员&#xff0c;员工等 管理员可以管理角色、菜单 经理可以管理 组织规划&#xff0c;员工管理&#…

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

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

【Qt 学习之路】关于C++ Vlc视频播放

文章目录 1、简介2、效果2.1、视频2.2、动态图 3、核心代码3.1、判断视频3.2、视频核心类调用3.3、视频核心类3.3.1、头文件3.3.2、源文件 1、简介 最近有童鞋咨询VLC相关的问题&#xff0c;公布一个 5年前 编写的 VLC示例 代码供参考学习。包括正常对视频各种常用的操作&…

ASP.NET进销存系统源码

ASP.NET进销存系统源码 功能介绍&#xff1a; 财务 销售清单&#xff0c;填写销售单&#xff0c;客户管理&#xff0c;添加客户资料 销售 销售清单&#xff0c;填写销售单&#xff0c;客户管理&#xff0c;添加客户资料 仓库 仓库结存&#xff0c;仓库盘点&#xff0c;盘点结…

App在线封装的革命性创新

随着移动互联网的蓬勃发展&#xff0c;App已经成为我们日常生活中不可或缺的一部分。从购物、交通、社交到娱乐&#xff0c;几乎每个人的智能手机都装载着数十个应用程序&#xff0c;以满足各式各样的需求。然而&#xff0c;对于许多非技术背景的企业家和小型企业而言&#xff…

【JAVA基础--计算机网络】--TCP三次握手+四次挥手

三次握手四次挥手 写在前面1. 三次握手1.1 作用&#xff1a; 为了在不可靠的信道上建立起可靠的连接&#xff1b;1.2 建立过程1.3 面试提问 2. 四次挥手2.1 作用&#xff1a;为了在不可靠的网络信道中进行可靠的连接断开确认2.2 断开过程2.3 面试提问 写在前面 三次握手建立连…

2.4G无线遥控器方案开发,稳定性强,可用于多种应用

2.4G遥控器是一种使用2.4GHz频段的无线遥控器&#xff0c;常用于遥控玩具、航模和家电等电子设备上。相比于传统的红外线遥控器&#xff0c;2.4G遥控器具有更强的穿透力和稳定性&#xff0c;可以在较远的距离内实现遥控操作&#xff0c;并且不会受到光线干扰。它由遥控器和接收…

【Leetcode】2182. 构造限制重复的字符串

文章目录 题目思路代码 题目 2182. 构造限制重复的字符串 问题&#xff1a;给你一个字符串 s 和一个整数 repeatLimit &#xff0c;用 s 中的字符构造一个新字符串 repeatLimitedString &#xff0c;使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全…

汽车专业翻译,如何选择好的翻译公司?

随着中国汽车市场的不断壮大和国际化的步伐加快&#xff0c;众多外国汽车品牌纷纷进军中国市场&#xff0c;与此同时&#xff0c;国内汽车企业也在积极拓展海外版图。在此背景下&#xff0c;汽车企业与国际客户、供应商和合作伙伴的交流日益频繁。因此&#xff0c;拥有一支专业…

个人的感悟观点,即将毕业的应届生的对自己未来方向的思考和认识

目录 复习历程思考 为什么我选择了考研 考完后我的状态 考完后我的做法 我对方向的看法&#xff08;拙见&#xff09; 复习历程思考 自我决定考研复习一刻开始。停更半年之久&#xff0c;甚至更长。没有分享自己的学习。在时常半年多的考研复习的过程中。我决定它带给我希…