当前位置: 首页 > article >正文

C++ 从 0 入门(三)|类与对象基础(封装、构造 / 析构函数,面试必考)

大家好我是网域小星球。本篇是 C 面向对象的核心开篇也是C 面试重中之重—— 类与对象基础。面试官几乎都会问封装、构造函数、析构函数的用法甚至让手撕代码。本篇全程聚焦面试考点不冗余、只讲核心代码 VS2022 直接运行吃透就能应对类与对象的基础面试提问。目录一、核心学习目标面试导向二、类与对象的概念面试基础题1. 核心定义面试直接答2. 类的基础语法必写3. 访问权限封装的核心面试必问三、构造函数面试必考重中之重1. 核心作用2. 构造函数的 3 个特点面试必背3. 构造函数的 3 种写法笔试常考4. 面试坑点必避四、析构函数面试必考与构造函数成对出现1. 核心作用2. 析构函数的 3 个特点面试必背3. 析构函数用法结合动态内存面试常考4. 面试考点高频五、构造 / 析构函数的调用顺序面试笔试题六、本章核心总结面试速记下期预告一、核心学习目标面试导向掌握类与对象的概念面向对象核心面试必问理解封装特性C 三大特性之首定义 用法熟练掌握构造函数写法、作用、面试常考重载熟练掌握析构函数写法、作用、内存释放逻辑避开构造 / 析构函数的常见面试坑点二、类与对象的概念面试基础题1. 核心定义面试直接答类class抽象的模板定义对象的属性成员变量和行为成员函数不占用内存对象类的实例化根据类模板创建的具体实体占用内存关系类是对象的 “蓝图”对象是类的 “具体实现”比如 “人类” 是类“张三” 是对象。2. 类的基础语法必写#include iostream #include string using namespace std; // 类的定义class关键字 class Person { // 访问权限封装的核心 public: // 公有类内、类外都能访问常用 // 成员变量属性 string name; int age; // 成员函数行为 void showInfo() { cout 姓名 name 年龄 age endl; } private: // 私有只有类内能访问封装核心隐藏细节 string id; // 私有成员类外无法直接访问 }; // 主函数实例化对象 int main() { // 方式1默认实例化 Person p1; p1.name 张三; // 公有成员类外可访问 p1.age 20; p1.showInfo(); // 调用成员函数 // 方式2直接初始化 Person p2 {李四, 22}; p2.showInfo(); return 0; }3. 访问权限封装的核心面试必问C 用访问权限实现封装三种权限牢记public公有类内、类外均可访问常用成员函数、对外暴露的属性private私有只有类内可访问核心属性隐藏细节比如身份证号、密码protected保护类内可访问子类可访问后续继承章节讲解。面试考点封装的作用答隐藏对象的核心细节只对外暴露必要的接口提高代码安全性、可维护性。三、构造函数面试必考重中之重1. 核心作用对象创建时自动调用用于初始化对象的成员变量避免成员变量为随机值无需手动调用。2. 构造函数的 3 个特点面试必背函数名和类名完全相同没有返回值连 void 都不写可重载面试常考多构造函数适配不同初始化场景。3. 构造函数的 3 种写法笔试常考#include iostream #include string using namespace std; class Person { public: string name; int age; // 1. 无参构造函数默认构造 Person() { name 未知; age 0; cout 无参构造函数调用 endl; } // 2. 有参构造函数常用 Person(string n, int a) { name n; age a; cout 有参构造函数调用 endl; } // 3. 拷贝构造函数面试高频用一个对象初始化另一个对象 Person(const Person p) { name p.name; // 把p的name赋值给当前对象 age p.age; // 把p的age赋值给当前对象 cout 拷贝构造函数调用 endl; } void showInfo() { cout 姓名 name 年龄 age endl; } }; int main() { Person p1; // 调用无参构造 Person p2(张三, 20); // 调用有参构造 Person p3 p2; // 调用拷贝构造用p2初始化p3 p1.showInfo(); p2.showInfo(); p3.showInfo(); return 0; }4. 面试坑点必避若手动写了有参构造编译器不会再自动生成无参构造需手动写否则报错拷贝构造函数的参数必须加const避免修改原对象且必须是引用避免无限递归无参构造和默认构造的区别无参构造是手动写的默认构造是编译器自动生成的若未写任何构造。四、析构函数面试必考与构造函数成对出现1. 核心作用对象销毁时自动调用用于释放对象占用的资源比如动态内存、文件句柄无需手动调用。2. 析构函数的 3 个特点面试必背函数名~类名波浪线 类名没有返回值也没有参数不能重载只能有一个若未手动写编译器会自动生成默认析构函数但无法释放动态内存面试常考。3. 析构函数用法结合动态内存面试常考#include iostream #include string using namespace std; class Person { public: string name; int* age; // 动态内存指针面试常考场景 // 有参构造申请动态内存 Person(string n, int a) { name n; age new int(a); // 申请堆内存存储年龄 cout 有参构造调用申请内存 endl; } // 析构函数释放动态内存必须手动写 ~Person() { if (age ! nullptr) // 避免野指针 { delete age; // 释放堆内存 age nullptr; // 置空防止野指针 } cout 析构函数调用释放内存 endl; } void showInfo() { cout 姓名 name 年龄 *age endl; } }; int main() { Person p(张三, 20); p.showInfo(); // 函数结束对象p销毁自动调用析构函数释放内存 return 0; }4. 面试考点高频析构函数为什么不能有参数答析构函数是对象销毁时自动调用的无法手动传递参数所以不能重载只能有一个。什么时候必须手动写析构函数答当类的成员变量有动态内存new 申请的内存时必须手动写析构函数释放否则会造成内存泄漏。五、构造 / 析构函数的调用顺序面试笔试题牢记先构造后析构构造顺序与对象创建顺序一致析构顺序相反。示例代码笔试常考#include iostream using namespace std; class A { public: A() { cout A构造 endl; } ~A() { cout A析构 endl; } }; class B { public: B() { cout B构造 endl; } ~B() { cout B析构 endl; } }; int main() { A a; // 先创建A调用A构造 B b; // 再创建B调用B构造 // 析构顺序先析构后创建的B再析构先创建的A return 0; }输出结果面试直接答A 构造 → B 构造 → B 析构 → A 析构六、本章核心总结面试速记类是模板无内存对象是实例有内存封装通过访问权限实现构造函数类名相同、无返回值、可重载对象创建时自动调用用于初始化析构函数~ 类名、无返回值、无参数对象销毁时自动调用用于释放资源动态内存必须在析构函数中释放否则内存泄漏面试重点构造顺序与对象创建一致析构顺序相反笔试常考。下期预告C 从 0 入门四类与对象进阶继承、多态 面试高频题收官篇

相关文章:

C++ 从 0 入门(三)|类与对象基础(封装、构造 / 析构函数,面试必考)

大家好,我是网域小星球。 本篇是 C 面向对象的核心开篇,也是 C 面试重中之重 —— 类与对象基础。面试官几乎都会问封装、构造函数、析构函数的用法,甚至让手撕代码。本篇全程聚焦面试考点,不冗余、只讲核心,代码 VS2…...

C++ 从 0 入门(二)|引用与指针区别、函数重载、内联函数(面试高频)

大家好,我是网域小星球。 本篇聚焦 C 面试核心考点,全是面试官必问、笔试题常考内容,衔接上一篇基础,不冗余、不堆砌,只讲核心用法 面试踩分点,所有代码 VS2022 可直接运行,学完能应对 C 基础…...

C++ 从 0 入门(一)|C++ 基础语法、命名空间、引用、IO 输入输出

大家好,我是网域小星球。 C 兼容 C 语言全部语法,同时扩展了面向对象、引用、泛型、内存管理等高级特性,也是 C 开发岗面试的核心考察内容。本篇从零过渡 C 基础,聚焦语法差异、高频考点、笔试题,所有代码 VS2022 直接…...

终极指南:如何在Unity 2D游戏中快速实现智能角色导航

终极指南:如何在Unity 2D游戏中快速实现智能角色导航 【免费下载链接】NavMeshPlus Unity NavMesh 2D Pathfinding 项目地址: https://gitcode.com/gh_mirrors/na/NavMeshPlus NavMeshPlus是一个专为Unity 2D游戏设计的导航网格插件,它扩展了Unit…...

用LabView和STC89C52打造智能温湿度报警系统(含上位机控制)

用LabView和STC89C52打造智能温湿度报警系统(含上位机控制) 在智能家居和工业监控领域,温湿度监测一直是核心需求之一。传统的手动记录方式早已无法满足现代场景对实时性和智能化的要求。本文将带你从零构建一套完整的智能温湿度报警系统&…...

告别蓝绿失真!用Water-Net(TensorFlow 1.13.1)实战水下图像增强,从环境配置到效果测试保姆级教程

水下图像增强实战:用Water-Net消除蓝绿偏色的完整指南 每次潜水归来,看着相机里那些被海水"吃掉"色彩的模糊照片,总让人感到遗憾。水下摄影爱好者、海洋生物研究者或是水下工程检测人员,都面临着一个共同的难题——如何…...

从医疗分割到图像修复:手把手复现一个你自己的MIMO-UNet去模糊模型

从医疗分割到图像修复:手把手复现一个你自己的MIMO-UNet去模糊模型 在计算机视觉领域,图像去模糊一直是个极具挑战性的任务。想象一下,你拍摄了一张珍贵的照片,却因为手抖或对焦不准而变得模糊不清——这正是图像去模糊技术要解决…...

从色温窗口到增益系数:一种硬件友好的实时白平衡方案

1. 为什么我们需要硬件友好的白平衡方案 每次用手机拍出来的照片颜色不对劲,你是不是总觉得是手机摄像头不行?其实很多时候问题出在白平衡上。白平衡就像是给照片戴了一副"有色眼镜",它的任务是消除光源色温对颜色的影响&#xff0…...

Home Assistant美的设备本地控制终极指南:摆脱云端依赖,实现快速响应

Home Assistant美的设备本地控制终极指南:摆脱云端依赖,实现快速响应 【免费下载链接】homeassistant-midea-air-appliances-lan This Home Assistant custom component adding support for controlling Midea air conditioners and dehumidifiers on lo…...

【优化位置】基于matlab配电系统中电容的最佳位置(降低损耗和电压改善)【含Matlab源码 15346期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

杰理之linein复用CMD检测配置【篇】

...

如何快速配置微信支付证书:3步完成自动化下载与解密

如何快速配置微信支付证书:3步完成自动化下载与解密 【免费下载链接】CertificateDownloader Java 微信支付 APIv3 平台证书的命令行下载工具 项目地址: https://gitcode.com/gh_mirrors/ce/CertificateDownloader 还在为微信支付APIv3平台证书管理而烦恼吗&…...

AI原生开发,到底是个啥?

我第一次听说“AI原生开发”时,差点以为是AI自己写代码说实话,刚听到“AI原生开发”这个词,我脑子里立马浮现出一个画面:一台电脑坐在办公桌前,一边喝咖啡一边敲键盘,还时不时叹口气说“这需求真难搞”。当…...

JBoltAI工业数智化SOP:助力“人工智能+”工业新发展

在“人工智能”工业浪潮席卷而来的当下,工业领域的数智化转型成为必然趋势。JBoltAI工业数智化SOP产品,凭借其独特的功能架构,为工业企业的标准化作业流程管理带来了新的思路与解决方案。清晰架构,高效管理SOP内容JBoltAI工业数智…...

如何用roop-unleashed快速制作高质量AI换脸视频:完整入门指南

如何用roop-unleashed快速制作高质量AI换脸视频:完整入门指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要在几分钟内制作出专业级AI换脸…...

手把手教你用Python处理ConceptNet中文数据:从CSV读取到关系查询(附繁简体转换)

手把手教你用Python处理ConceptNet中文数据:从CSV读取到关系查询(附繁简体转换) 在自然语言处理领域,知识图谱正成为提升模型理解能力的关键工具。ConceptNet作为开放多语言知识图谱,其中文部分包含丰富的概念关系数据…...

从向量旋转到切线求解:一种高效的几何算法实现

1. 为什么我们需要更优雅的切线求解方法 在几何计算中,求圆外一点到圆的切线切点坐标是一个经典问题。传统解法通常采用联立方程法:先建立圆的方程和切线方程,然后解这个方程组。这种方法在纸笔计算时还算可行,但一旦要编写代码实…...

避坑指南:瑞萨e2studio中DTC地址绑定的那些坑——以RA2E1内存操作为例

瑞萨RA2E1开发实战:DTC地址绑定疑难解析与高效调试方案 在嵌入式开发领域,瑞萨RA2E1系列MCU凭借其出色的低功耗特性和丰富的外设资源,成为物联网终端设备的理想选择。然而,当开发者深入使用e2studio集成开发环境时,往往…...

Unity学习90天-第7天-学习委托与事件(简化版)

欢迎回来! 今天我们来搞定理解委托和事件的核心概念,用"受伤、得分、游戏结束"三个游戏场景掌握解耦思路!一、为什么要用事件?先看"耦合"的痛点假设玩家受伤时,需要同时做三件事:、玩家…...

终极性能优化指南:3分钟掌握Thorium浏览器的极致体验

终极性能优化指南:3分钟掌握Thorium浏览器的极致体验 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top of the …...

STM32F4外扩SRAM实战:用FSMC ModeA驱动62WV51216BLL(附完整配置代码)

STM32F4外扩SRAM实战:用FSMC ModeA驱动62WV51216BLL(附完整配置代码) 在嵌入式系统开发中,内存资源常常成为性能瓶颈。当STM32F4系列MCU的片上SRAM无法满足需求时,外扩SRAM成为提升系统性能的有效方案。本文将手把手带…...

2026 年端侧 AI 加速落地,荣耀转型 AI 终端生态公司,揭秘 AI 手机迭代方向与战略布局

2026 年:端侧 AI 加速落地 2026 年,AI 正在加速从云端落地到端侧。3 月下旬,国内几大手机厂商几乎同时推送了端侧 AI 的大规模更新,把原本仅限于旗舰机的 AI 能力下放到中端和千元机市场,端侧 AI 成为大部分智能手机的…...

终极指南:用Windhawk打造你的专属Windows体验

终极指南:用Windhawk打造你的专属Windows体验 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 你是否厌倦了Windows千篇一律的界面&#xff1…...

STM32 串口 FIFO 与 DMA 高效数据流设计

1. 为什么需要FIFODMA的串口方案 第一次用STM32做串口通信时,我天真地以为直接调用HAL_UART_Receive_IT()就能搞定所有问题。结果在工业现场调试时,当传感器以115200波特率连续发送数据时,系统直接卡死——这就是典型的数据淹没问题。后来发现…...

AI 热点资讯日报20260417

文章目录AI 热点资讯日报一、今日核心热点总结二、各来源文章汇总📰 新华网科技(news.cn)📰 36氪(36kr.com)📰 虎嗅网(huxiu.com)📰 网易科技(tec…...

告别printk:用kprobe内核模块动态追踪Linux内核函数调用(附do_fork示例)

告别printk:用kprobe内核模块动态追踪Linux内核函数调用(附do_fork示例) 调试Linux内核就像在黑暗中摸索——你永远不知道下一个崩溃会从哪里冒出来。传统printk调试不仅效率低下,还可能引入新的问题。想象一下,当你需…...

Cursor AI 完全解锁指南:3大核心技巧免费畅享Pro功能

Cursor AI 完全解锁指南:3大核心技巧免费畅享Pro功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tria…...

终极指南:如何用Testsigma在30分钟内搭建企业级自动化测试平台

终极指南:如何用Testsigma在30分钟内搭建企业级自动化测试平台 【免费下载链接】testsigma Testsigma is an agentic test automation platform powered by AI-coworkers that work alongside QA teams to simplify testing, accelerate releases and improve quali…...

HideMockLocation终极指南:5步快速隐藏Android模拟位置设置

HideMockLocation终极指南:5步快速隐藏Android模拟位置设置 【免费下载链接】HideMockLocation Xposed module to hide the mock location setting. 项目地址: https://gitcode.com/gh_mirrors/hi/HideMockLocation HideMockLocation是一款专为Android开发者…...

别再手动写JCo3.0连接代码了!用Spring Boot整合SAP RFC接口的完整配置流程

Spring Boot与SAP JCo3.0深度整合:告别繁琐的手工RFC调用 在传统企业IT架构中,SAP系统往往扮演着核心业务中枢的角色。当Java开发者需要与SAP进行数据交互时,JCo3.0(Java Connector)几乎是绕不开的技术选择。但原生JCo…...