单页 网站 模板/外包平台
前言
大家好吖,欢迎来到 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:
- 声明一个名为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;
}
相关文章:

【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】
前言 大家好吖,欢迎来到 YY 滴C复习系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…...

游戏开发中,你的游戏图片压缩格式使用ASTC了吗
文章目录 ASTC原理:使用要求 ASTC(Adaptive Scalable Texture Compression,自适应可伸缩纹理压缩)是一种高级的纹理压缩技术,由ARM公司开发并推广。它在图形处理领域中因其出色的压缩效率和灵活性而受到广泛关注。 AST…...

【PostgreSQL】数据查询-概述
PostgreSQL数据查询 概述 检索或从数据库中检索数据的命令的过程称为查询。在 SQL 中,SELECT 命令用于指定查询。该命令的一般语法是SELECT [WITH with_queries] SELECT select_list FROM table_expression [sort_specification]一种简单的查询形式为:…...

element input组件自动失去焦点问题解决
最近在 Vue3 ElementPlus 中,使用 el-input 组件时,如果设置了 v-model,那么在每次改变内容后后,input 会自动失去焦点,这样会导致用户无法输入多个字符。 一、问题原因 如上图所示,配置项的 Name 和 Cod…...

鸿蒙Harmony--状态管理器-@Observed装饰器和@ObjectLink装饰器详解
经历的越多,越喜欢简单的生活,干净的东西,清楚的感觉,有结果的事,和说到做到的人。把圈子变小,把语放缓,把心放宽,用心做好手边的事儿,该有的总会有的! 目录 一ÿ…...

pytorch安装
pytoch安装 1. 准备工作1.1 需要提前安装的软件 2. 安装pyTorch我遇到的问题 3. 显卡测试4. CPU与GPU切换方法4.1 创建张量4.2 第一种切换方法4.3 第二种切换方法 1. 准备工作 1.1 需要提前安装的软件 Anaconda 史上最全最详细的Anaconda安装教程CUDA CUDA安装教程࿰…...

GBASE南大通用系统目录表
系统目录由描述数据库结构的表和视图组成。这些表对象有时称为数据字典,它们包含 数据库本身的所有信息。每个系统目录表都包含有关数据库中特定元素的信息。每个数据 库都有它自己的系统目录。 这些主题提供了有关系统目录表的结构、内容和使用的信息。还包含了有关…...

RPCMS跨站脚本漏洞(xss)
CNVD-ID: CNVD-2024-01190 漏洞描述: RPCMS是一个应用软件,一个网站CMS系统。 RPCMS v3.5.5版本存在跨站脚本漏洞,该漏洞源于组件/logs/dopost.html中对用户提供的数据缺乏有效过滤与转义,攻击者可利用该漏洞通过注入精心设计的有效载荷执行…...

Linux进阶命令使用
在 Linux 中,除了常用的基础命令,有一系列进阶命令可以帮助用户更有效地管理系统和执行复杂的任务。以下是一些常见的 Linux 进阶命令及其用法: 文本处理 grep:搜索文本并打印匹配的行。 grep pattern filenameawk:用…...

重定位,进程的创建,线程相关
重定位 进程的重定位指将程序加载到内存中不同的位置执行,在进程换出换入过程中将会发生。通过更新程序中使用的相对地址。 进程的创建——fork() 进程树,在自己的节点下创建进程节点。 使用fork,创建的子进程是父进…...

Java填充Execl模板并返回前端下载
功能:后端使用Java POI填充Execl模板,并返回前端下载 Execl模板如下: 1. Java后端 功能:填充模板EXECL,并返回前端 controller层 package org.huan.controller;import org.huan.dto.ExcelData; import org.huan.util.ExcelT…...

ChatGPT本地部署,学习记录
一、GPT4ALL模型 官网地址: Github:https://github.com/nomic-ai/gpt4all GPT4ALL项目部署简易,但是在运行体验上一般,并且是只调用CPU来进行运算。 看官方文档介绍在嵌入式上有比较大的优势,但是目前个人对嵌入式…...

Find My游戏手柄|苹果Find My技术与手柄结合,智能防丢,全球定位
游戏手柄是一种常见电子游戏机的部件,通过操纵其按钮等,实现对游戏虚拟角色的控制。随着游戏设备硬件的升级换代,现代游戏手柄又增加了:类比摇杆(方向及视角),扳机键以及HOME菜单键等。现在的游…...

2024美赛数学建模思路 - 复盘:光照强度计算的优化模型
文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米,宽为12米&…...

【Deep Dive: AI Webinar】开放 ChatGPT - 人工智能开放性运作的案例研究
【深入探讨人工智能】网络研讨系列总共有 17 个视频。我们按照视频内容,大致上分成了 3 个大类: 1. 人工智能的开放、风险与挑战(4 篇) 2. 人工智能的治理(总共 12 篇),其中分成了几个子类&…...

Devops相关问题及答案(2024)
1、DevOps 的理念是什么? DevOps是一种组织文化、流程和工具的集合,旨在提高软件交付的速度和质量,通过自动化和持续改进的方法来促进开发(Dev)和运维(Ops)的协作。 DevOps的核心理念包括&…...

掌握Python设计模式,SQL Alchemy打破ORM与模型类的束缚
大家好,反转软件组件之间的依赖关系之所以重要,是因为它有助于降低耦合度和提高模块化程度,进而可以提高软件的可维护性、可扩展性和可测试性。 当组件之间紧密耦合时,对一个组件的更改可能会对其他组件产生意想不到的影响&#…...

性能分析与调优: Linux 磁盘I/O 观测工具
目录 一、实验 1.环境 2.iostat 3.sar 4.pidstat 5.perf 6. biolatency 7. biosnoop 8.iotop、biotop 9.blktrace 10.bpftrace 11.smartctl 二、问题 1.如何查看PSI数据 2.iotop如何安装 3.smartctl如何使用 一、实验 1.环境 (1)主机 …...

Could not erase files or folders:
IDEA删除 git 的 localChanges 内的文件时,提示Could not erase files or folders:。 确认下这个文件是否被打开,忘记关闭了;关闭后可以被删除。(文件被打开的情况下,用操作系统自带的删除,也无法删除成功…...

算法训练营第四十四天|动态规划:完全背包理论基础 518.零钱兑换II 377. 组合总和 Ⅳ
目录 动态规划:完全背包理论基础Leetcode518.零钱兑换IILeetcode377. 组合总和 Ⅳ 动态规划:完全背包理论基础 文章链接:代码随想录 题目链接:卡码网:52. 携带研究材料 思路:完全背包问题,物品可…...

探索计算机网络:应用层的魅力
在当今数字化时代,计算机网络已成为我们生活和工作中不可或缺的一部分。网络的每一层都扮演着独特而重要的角色,而应用层,作为网络模型中用户最直接接触的部分,其重要性不言而喻。这篇文章旨在深入探索应用层的核心概念、功能以及…...

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

前端导出Excel文件,部分数字前面0消失处理办法
详细导出可以看之前的文章 js实现导出Excel文档_js 通过 接口 导出 xlsx 代码-CSDN博客 今天的问题是导出一些数据时,有些字段是前面带有0的字符串,而导出后再excel中就被识别成了数字 如图本来字符串前面的0 都没了 解决方案 1. 导出的时候在前面加单…...

零基础学Python网络爬虫案例实战 全流程详解 高级进阶篇
零基础学Python网络爬虫案例实战 全流程详解 入门与提高篇 零基础学Python网络爬虫案例实战 全流程详解 高级进阶篇 编辑推荐 本书讲解了Python爬虫技术的高级进阶知识,帮助有一定爬虫基础的读者进一步提高爬虫技术。本书详解了突破反爬机制的常用手段以及Scrapy和…...

第十二届“中关村青联杯”全国研究生数学建模竞赛-A题:水面舰艇编队防空和信息化战争评估模型(续)(附MATLAB代码实现)
目录 5.3.3 问题三的总结 5.4 问题四的模型建立与求解 5.4.1 问题分析 5.4.2 计算方位角和航向角...

bmp图像文件格式超详解
0 BMP简介 BMP(Bitmap-File)图形文件,又叫位图文件,是Windows采用的图形文件格式,在Windows环境下运行的所有图像处理软件都支持BMP图像文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。一个BMP文件由四部分组成: B…...

Unity Meta Quest 一体机开发(十三):【手势追踪】自定义交互事件 EventWrapper
文章目录 📕教程说明📕交互事件概述📕自定义交互逻辑⭐方法一:Inspector 面板赋值⭐方法二:纯代码处理 此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区。这是一个高质量…...

13、Redis高频面试题
1、项目中为什么用Redis 我们项目中之所以选择Redis,主要是因为Redis有下面这些优点: 操作速度快:Redis的数据都保存在内存中,相比于其它硬盘类的存储,速度要快很多数据类型丰富:Redis支持 string&#x…...

Koa学习笔记
1、npm 初始化 npm init -y生成 package.json 文件,记录项目的依赖2、git 初始化 git init生成 .git 隐藏文件夹,.git 的本地仓库创建 .gitignore 文件,添加不提交文件的名称3、创建 ReadMe.md 文件 记录项目笔记4、搭建项目 安装 Koa 框架npm install koa5、编写最基本的…...

HiDataPlus 3.3.2-005 搭建(个人的一点心得体会 x86 平台)
HDP 集群搭建 前置安装 yum -y install createrepo yum install -y lrzsz yum install -y wget yum install -y vim修改当前集群机器的主机名 hostnamectl set-hostname XXX 这里的 XXX 就是要设置的当前机器的主机名称。主机名称是集群唯一的,一定不要重复&am…...