学习侯捷c++面向对象高级开发时培养大气的编程习惯几个注意事项(一)

侯捷C++八部曲笔记(一、面向对象) 阅读详情

培养大气的编程习惯几个注意事项(一)

主要是在学习侯捷老师的c++面向对象高级开发时遇到的一些注意的点,对初学者面向对象编程有很大的帮助。

1.Header (头文件) 中的防卫式声明

在这里插入图片描述
防卫式声明的作用:
避免了编译器在编译阶段重复包含同一段声明,防止由于同一个头文件被包含多次,而导致了重复定义。具体带来的影响可以看下面这个例子。

– “Car.h”,代码如下(并没有添加防卫式声明):
在这里插入图片描述
– “Person.h”,代码如下(包含了Car.h文件):
在这里插入图片描述
– 在"main.cpp"中,我们同时include两个头文件:
在这里插入图片描述
此时,我们会发现编译出错:Redefinition of ‘Car’.

可是为什么会出现这样的情况呢?

我们需要知道,在预编译阶段,编译器会把.h文件展开,即main.cpp中的代码可以看做是:

class Car
{
    // ...
};
 
class Car
{
    // ...
};
 
class Person
{
public:
    Car car;
};
 
int main(int argc, const char * argv[]) {
    Person p;
}

所以,我们可以知道防卫式声明的作用是:防止由于同一个头文件被包含多次,而导致了重复定义。

2.写构造函数时是否用到了初值列(initialization list)

这也是考察你是否经受过系统训练的一个点,在我们写构造函数的时候编译器给了我们一个赋初值的机会,具体形式如下画红线处所示:

在这里插入图片描述
这样做有两点好处:
1.证明大家是受过专业训练的。
2.编译时,在初值列处定义初值比在构造函数的{ }中定义初值更快,这是因为编译时系统是先调用头文件中的构造函数,如果没有初值列,然后在去cpp文件中找初值的定义,如果有初值列则直接就找到了初值定义,速度更快。

侯捷C++八部曲笔记(二、STL标准库和泛型编程) 阅读详情

相关推荐

Docker Desktop重装避坑:从卸载到安装的完整流程(Win10/Win11适用)

本文详细介绍了在Windows 10/11系统上彻底卸载和重新安装Docker Desktop的完整流程,包括深度清理残留文件、注册表项和虚拟磁盘,以及安装前的环境准备和安装后的验证步骤,帮助用户避免常见问题并优化Docker环境配置。

julia4scientist的博客 1106

侯捷C++系列精品课体验课

侯捷C++系列课程包含集结了《 STL 标准库与泛型编程》、《 C++ 新标准 11/14 》、《 C++ 面向对象开发》、《 C++ 内存管理机制》精华课程,全面覆盖 C++ 核心技术,帮助开发者从基础到深入,逐步掌握现代 C++ 编程精髓。150+课程视频请戳>>https://edu.youkuaiyun.com/cloud/houjie

手撕代码系列:Conv2D

在实际的神经网络中,每个卷积核都会对应一个偏置值。这意味着如果网络有多个卷积核,每个卷积核的输出都可以加上对应的偏置。

qq_55794606的博客 907

【现代C++开发】使用现代的C++快速开发一款串口读写软件

最近关于C++闹出来的动静态势挺大的,主要是由于爱美丽卡开始抵制C++,最近有不少文章都报道了这件事,比如即使C++到了这个时候,C++也还是值得学习的,起码不管你用起来体验怎么样,反正我开发的爽。现阶段仍然有很多地方都是用C++写的,因此还是需要用到的,尽管现在都开始使用Rust来代替C++了,但Rust的别扭也是众所周知的,在Rust中文社区就看到不少人因此选择放弃Rust转回C++了(反正不可能是我,我C++主要还是嵌入式和玩)。

专注Rust编程与技术分享,涵盖C++、Python等开发实战,新手友好,专注实战,助力编程成长。 1万+

C#与大数据分析:如何通过上位机进行设备故障诊断与预测

设备故障诊断是通过对设备的运行状态数据进行分析,识别和确认故障的类型和位置。而设备故障预测则是通过对设备的历史数据和运行状态进行分析,预测设备何时可能出现故障,从而进行预防性维护。数据采集:通过各种传感器、PLC、嵌入式设备等采集设备运行数据,如温度、压力、振动、转速、功率等。数据预处理:对采集到的数据进行清洗、去噪、缺失值处理、标准化等操作,以确保数据质量。特征工程:从原始数据中提取出有助于故障诊断和预测的特征,例如统计特征、时域特征、频域特征等。数据分析与建模。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1060

【AI产品与商业航图】Flux.1 完全开源 AI 绘图模型:本地部署与 ComfyUI 实战指南

Flux.1是一个开源项目,用户可以自由使用和修改,完全免除使用费用。🖥️本地部署支持:与一些依赖云端计算的工具不同,Flux.1支持本地部署,确保用户可以离线使用并自主控制数据隐私。🔄兼容ComfyUI框架:Flux.1可以无缝集成到ComfyUI中,用户可以享受更加简便和直观的操作界面。🎨卓越的图像生成能力:Flux.1能够生成高质量、细腻的图像,支持多种风格与创作主题的切换。💾低硬件要求。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1736

深入探索C++17文件系统库:std::filesystem全面解析

在 C++17 之前,C++ 标准库缺乏对文件系统进行操作的原生支持,开发者通常依赖于操作系统特定的 API 或第三方库。这导致代码的可移植性差,且容易出错。C++17 引入了 `std::filesystem` 库,为文件和目录操作提供了一种跨平台、类型安全且易于使用的方式。本文将深入探讨 `std::filesystem` 库的各个方面,包括路径操作、文件操作、目录操作以及一些高级用法,并提供丰富的示例代码,帮助你快速掌握这个强大的工具。

专注Rust编程与技术分享,涵盖C++、Python等开发实战,新手友好,专注实战,助力编程成长。 1万+

PCIe(Peripheral Component Interconnect Express)的带宽和速率

PCIe带宽与速率解析 PCIe的速率指物理层传输速度(GT/s),而带宽是实际有效数据吞吐量(GB/s)。不同PCIe版本采用不同编码方式: PCIe 1.0-2.0:8b/10b编码(80%效率) PCIe 3.0+:128b/130b编码(≈98.5%效率) 单向峰值带宽速查(单位:GB/s): 版本 x1 x4 x8 x16 PCIe3 0.98 3.94 7.88 15.75 PCIe4 1.97 7.88 15.75 31.51 PCIe5 3.94 15.75 31.51 63.02 PCIe

MHD0815的博客 347

一、C++面向对象高级编程(上) (侯捷)

侯捷 C++八部曲笔记 C++面向对象高级编程

weixin_43412762的博客 1783

一文讲透 SAP VDM 命名里的前缀与后缀:看懂 I_、C_、A_,把 CDS 视图栈搭得又稳又好用

SAP S/4HANA 的 CDS 视图命名规范解析 摘要:本文详细解析 SAP S/4HANA 中 CDS 视图的 VDM 命名规范。通过前缀(如 I_、C_、R_)区分视图层级,后缀标记附加角色,结合 @VDM.viewType 注解形成完整语义体系。I_作为稳定接口层,C_面向特定场景裁剪,R_限定应用域内复用,A_提供远程 API 接口。命名规范使团队能快速识别视图用途、依赖关系和扩展边界,确保模型长期可维护性。文章结合制造业物料主数据、Fiori 应用等实际案例,说明如何通过规范命名构建清晰的视图

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 219

【华为OD机试真题】3、 路灯照明问题 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

题目描述 >在一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间间距固定为100米。 每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。

KJ.JK 1万+

一、C++面向对象高级编程(下) (侯捷)

侯捷 C++八部曲笔记: C++面向对象高级编程(下)

weixin_43412762的博客 1728

HDR 人像肤色稳定实战:AE/AWB/ToneMap 冲突解耦与优先级裁决

人像 HDR 最容易“翻车”的就是**肤色飘**:AE 抢亮度、AWB 拉白点、TM 又在肩部压高光,三方各自“对”却合起来“错”。本文给出一套**工程可落地**的裁决策略:以**肤色 ROI 锚点**为最高约束,AE 先对脸部入射照度收敛,AWB 在**肤色先验 + 光源模型**下缓变,TM 采用**色相保持 + 中灰/肤色双锚**且时域一致化。配套**阈值与回归**(ΔE00、亮度漂移 RMS、频闪注入),把“主观对”的口径落到**可度量**,并给出逆光、多脸、霓虹等极端场景的**例外分流**。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1194

C++侯捷

可以给类中函数和成员变量前面添加static关键字,让他们变成静态的,他不属于对象,而是属于类本身,静态函数只能处理静态的数据,不能处理其他数据。红色部分用来记录,开辟内存数,因为开辟内存必须要是16的倍数,所以最后3位都是0,所以利用最后一位来做记录1是给出,0是销毁。构造和析构的顺序,编译器调用的是默认的构造函数,如果满足不了,则需要自己在初始化列表中写需要调用的构造函数。这种写法也是非常流行,左边是对外提供的接口,右边是类的具体实现功能,左边类通过类指针去访问具体功能。2、赋值(在大括号里面赋值)

weixin_45715405的博客 890

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

侯捷--C++面向对象程序设计笔记

学习笔记,仅供参考,图片来源于网络

weixin_57950256的博客 1871

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

侯捷 - C++面向对象程序设计I(学习笔记)

Object-Based(基于对象):单一类Object-Oriented(面向对象):关联类B语言——C语言——C++语言(newC->C with Class->C++)书籍推荐:深度探索C++对象模型STL源码剖析。

weixin_44553525的博客 1252

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

我的c++学习路线

没必要每道题都要仔仔细细的做,但是每小节后的前2-3题 绝对需要自己做一下。More Effective C++(选看)深度探索C++第三章以外的部分(选看)深度探索C++对象模型第三章(必看)Effective C++(必看)程序的生前死后(选)黑马培训班的c++(必看)书籍 STL源码剖析(必看)视频入门 赫斌老师的c语言(选看)粗看三阶段侯捷老师的视频。

c1505076123的博客 1416

我学编程全靠B站了,真香(第一期)

我是就读于B站大学2020届的Martin同学,反正我学习计算机真的是全靠 B 站了。比如以及我这段时间正在学习的前端。各种教程下面分享一下我在B站大学就读时的课程表,老实说,我看过的视频有很多,同时B站优秀的编程类视频也有很多,今天来分享一下我觉得还不错的编程类学习视频。我看过的不仅有国内的,还有一些国外的精品课程,比如 MIT .828、6.824以及CMU15-213。因为篇幅原因,本期就,可以先透露一句,国外的计算机编程类视频优秀的着实不少。

Linuxer_Martin 6130

【C++】侯捷C++面向对象高级编程(上)

C++面向对象高级编程前言C++ Programs代码基本形式文件类型头文件写法头文件布局class1——complex类的声明inline——内联函数class访问级别(access level)构造函数(ctors)构造函数特有语法构造函数放到private?常量成员函数const member functions参数传递返回值友元friend同一个class的各个object互为友元操作符重载operator overloading(成员函数)操作符重载operator overloading(非成员

半生瓜のblog 2310

侯捷——2.C++标准库 体系结构与内核分析

allocators(分配器)是给containers(容器)分配内存的。当要创建容器时,必须先有分配器分配内存。在创建容器时,可以指定分配器,也可以不指定,编译器会默认指定分配器。

壹的博客 560

C++ 侯捷 内存管理

C++ 侯捷 内存管理

zaizai1007的博客 1239

C++ 侯捷 程序设计(Ⅱ)兼谈对象模型 笔记

侯捷老师使用分数 Fraction举例,分数理应可以被看作是小数提供了Fraction类对象一个转换为double的方法,当碰到需要转换为double的情况下,会调用该方法。的就是转换函数,没有return type,返回类型就是名称double这一类型。编译器会找是否有全局函数 operator + ,第一个参数是整数或浮点数(整数是浮点数),第二个参数是Fraction,若有这么个函数,就会走得通。但示例代码中没有这么一个全局函数,故会去找有没有将fraction转换为double的转换函数。

m0_61939767的博客 2306

侯捷---c++面向对象高级编程

本文主要介绍了C++面向对象编程的核心概念。首先讲解了头文件的使用和类的声明方式,比较了C与C++的区别。重点阐述了构造函数的特性,包括inline函数、访问级别控制、构造函数重载等内容。详细分析了参数传递和返回值的优化策略,推荐优先使用引用传递。深入探讨了操作符重载的两种实现方式(成员函数和非成员函数),并强调临时对象的使用注意事项。最后解析了三大特殊函数:拷贝构造、拷贝赋值和析构函数,通过String类的实现案例,说明了带指针的类必须自定义拷贝操作以避免浅拷贝问题。文章还涉及了友元函数、const成员函

qq_52276934的博客 1040

侯捷 - C++面向对象程序设计II(学习笔记)

【代码】侯捷 - C++面向对象程序设计II(学习笔记)

weixin_44553525的博客 522

侯捷C++(一、面向对象)

指针指针的使用效率不会比一般的指针高,但是它胜在更安全、更稳定,因为指针存放在类中,不通过类无法操作,通过类操作只能使用类中提供的函数。B是之类,继承父类A的虚函数,B覆写了vfunc1函数,所以B的虚表有自己vfunc1函数的指针和继承父类的vfunc2的指针。C是之类,继承父类B的虚函数,C覆写了vfunc1函数,所以C的虚表有自己vfunc1函数的指针和继承父类的vfunc2的指针。三个虚表共有4个虚函数,虚函数的调用:通过各自类的虚指针,跳到虚表,根据函数名在虚表中查找函数。

ljh5930的博客 900
下一篇: C++灵魂指针详解
Taylorandy
博客等级 码龄7年 21粉丝 9原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值