C++良方

C++控制台游戏【推箱子】有源代码 Module Name: 推箱子【C++】 Description: 之前我在共享上传了三个游戏 【坦克】【俄罗斯】【贪吃蛇】 都是用C写的,因为当时我只会C,现在学了C++,用C++写了这个游戏 【推箱子】这个源代码【C-free】【VC++6.0】送给喜欢编程的朋友们参考..... Author: 王云飞 【QQ:283371828】 Last Change: 2010.4.25 立即下载
 

c++面向对象中的繁琐机制,不得不让你在编程中频频“犯病”,找错误,找bug,困扰,是你的病源所在,本人虽不是什么“良医”, 却也算是总结出以下“良方”。注:难免会有记忆上的遗漏,知识上的不够,遗漏之处还需大家来补充啊!http://blog.youkuaiyun.com/zhanxinhang



药方1 ☞ 必需时刻明白面向对象编程中要扮演的两个角色,一个就是你,类的设计者,一个就是用户,类的使用者,你的设计是针对用户而言的,当然你也可能是身兼两职,同时是设计者又是用户。

药方2 ☞ 设计一个类时,将声明放于头文件,定义放在cpp文件中,因为类是给用户使用的,将声明放在头文件中,用户便可以方便使用,而定义在cpp文件中主要是为了两点,一提高编译效率,二避免用户包含文件后发生重定义。

药方3 ☞ 声明完一个类后必须以分号结束,因为声明完一个类后后面还可以加一个对象名,用来声明该类的实例化对象,分号‘;’ 不是表示声明的结束,而是表示声明该类对象的结束,如果单纯一个分号表示没有声明任一对象。

药方4 ☞ 避免在构造函数里实例化本类,否则会发生递归死循环。

药方5 ☞ 避免在析构函数里delete本类实例,否则会发生递归死循环。

药方6 ☞ inline成员函数必须在头文件里定义,因为inline函数本质是内联展开的,跟#define预编译类似。

药方7 ☞ hpp头文件里的类或函数必须在hpp头文件里定义,因为hpp的本质是让编译器只对hpp文件里的内容编译一次,然后将目标代码附到cpp目标文件中。

药方8 ☞ hpp头文件里的全局变量必须声明为static 否则会发生重编译,static本质是让编译器只定义一次。

药方9 ☞ const 数据成员必须要在初始化列表中赋初值(c++11中也可以直接=号赋值),因为它是const变量。

药方10☞ const成员函数不允许你修改类的数据成员。因为它就是不予许。

药方11☞ 指向const对象的指针访问成员函数时,只能访问const成员函数,因为指向const对象的指针不予许你修改它所指向的内存的值,而const成员函数不修改类对象数据内存的值,它们俩正好互相吻合。

药方12☞ static数据成员需要在类外定义,它本质上并非属于包含它的类。

药方13☞ static成员函数不包含this指针,因为它本质上并非属于本类。

药方14☞ 如果类中的某一指针数据成员指向分配的内存空间,则一般的做法是定义析构函数,在析构函数里释放它所指的内存空间。因为类的生命周期结束时,如果没有定义析构函数,则会调用编辑器合成的析构函数,而该合成的析构函数不会智能地释放数据成员指针所指向的内存,所以必须在类结束之前释放它指向的内存。还有另一种做法就是将该成员指针定义为智能指针类型。

药方15☞ 操作符重载不能重载两个内置类型的对象,至少要有一个为类类型或枚举类型。因为重载两个内置类型的对象完全没有必要。

药方16☞ 赋值操作符重载(operator=),不宜设为虚函数,因为赋值操作符中的指针或引用函数参数有可能是指向基类对象也有可能是指向派生类对象,因此容易发生混淆。

药方17☞ 在继承层次中,基类应该定义一个虚析构函数,因为非虚析构函数不会被继承,而虚析构函数会在派生类定义析构函数时发生重定义(就是虚表指针指向了派生类的析构函数)。在利用基类指针实现多态时,基类指针指向了新开辟(new)的派生类对象,这时由于基类的析构函数是虚的,所以再利用基类指针释放(delete)掉派生类对象内存时,就可以顺利地执行派生类的析构函数了。

药方18☞ 模板类或函数,在头文件中声明,并且,定义也要在此头文件中(一般采用hpp头文件),因为模板特化机制实际上是编译时利用模板参数产生可以兼容实例的目标代码附于使用它的cpp文件中(特化),从而实现多态,而不能预先产生目标代码就兼容实例的。

药方19☞ 声明友元之前必须对该声明友元的对象,进行声明或定义。因为你让我跟他交朋友,可以,但你必需让我知道他的为人吧。^_^

药方20☞ 你所知的只是沧海一粟,切莫过于骄傲和自满。

c++面向对象程序设计语言重点难点复习题及答案-整理 c++面向对象程序设计语言重点难点复习题及答案-整理. 立即下载

相关推荐

C++面向对象程序设计(第6版)Walter Savitch著 周靖译 课后习题答案

C++面向对象程序设计(第6版)Walter Savitch著 周靖译 课后习题答案

配方(c++题解)

某种食品由k种原料组成(1≤k≤16),每种原料的编号为1,2,3,…同时有n个人(1≤n≤1000),每个人对食品中的原料有一定的要求。第一行2个整数n和k,接下来n行,每行k个数据,每个数据分别为0,1或2,表示要求矩阵。那么,当n,k和要求矩阵给出之后,求出所有符合要求的食品方案数。若不可能,则输出-1。一个整数,表示所有符合要求的食品方案数,如不可能,输出-1。即食品的三种原料为有,有,有或有,无,有均可,故有2种方案。a[i,j] =1,表示第i个人对第j种原料要求一定要有。

hb_zhyu的博客 923

【电路设计实战】BUCK降压电路:从原理到PCB布局的降噪与效率优化

本文深入剖析了BUCK降压电路的工作原理,并针对其固有的开关噪声问题,提供了从核心元件选型到PCB布局的全面优化方案。文章重点探讨了电感、电容等关键元件的选型要点,强调了低ESR电容和肖特基二极管的重要性,并详细阐述了如何通过最小化功率回路、保护敏感信号线等PCB布局实战技巧,有效抑制噪声、提升效率与稳定性。

weixin_29304021的博客 222

Perket调配料(C/C++)dfs

你有 N 种配料,每种配料有酸度 S 和苦度 B 。用这些配料做成Perket时,总的酸度为所有配料酸度的乘积,总的苦度是所有配料苦度的和。你至少需要添加一种配料。 为了使口感适中,总的酸度和苦度之差的绝对值应该尽可能小,求这个最小值。 输入 第一行 1 个整数N (1≤N≤10) —— 配料的数量。 接下来 N 行每行 2 个整数Si和Bi —— 每种配料的酸度和苦度。如果用所有配料来做Perket,总的酸度和苦度都 ≤10^9。 输出 N 行,每行 1 个整数 —— 所求的最小值。 Sample Inp

深巷 614

CST新手必看:共面波导色散曲线绘制全流程(附参数设置详解)

本文为CST新手提供了绘制共面波导色散曲线的完整流程与参数设置详解。从模型搭建、周期性边界条件设置,到本征模求解器配置和参数扫描技巧,逐步解析关键步骤,并分享后处理与结果验证方法,帮助用户高效完成仿真任务。

j0k1l2m3n的博客 423

C和C++重难点复习笔记(二)【面向对象】

最近两天又有点空闲时间,把《C和C++程序员面试秘笈》中的第六章【C++面向对象】和第七章【C++继承和多态】的内容学习了一下。感觉这两章的内容应该放到一章当中,因为都属于面向对象的内容。 该书前三章的内容总结在了C和C++重难点复习笔记(一)【面向过程】中。 此外还有C和C++重难点复习笔记(三)【泛型编程与STL】 第六章 C++面向对象 1、消息指的是对象间相互联系和相互作用的方式。...

微鉴道长的博客 817

从零开始:用LabVIEW和ModbusTCP协议,像搭积木一样连接Delta PLC

本文详细介绍了如何利用LabVIEW的图形化编程环境和ModbusTCP工业协议,快速连接Delta PLC实现数据通信。通过模块化配置和实战案例,指导读者无需编写复杂代码即可完成寄存器读取、多数据类型处理及系统监控,显著提升工业自动化项目的开发效率与部署速度。

n8m7b6v5c4的博客 697

c++面向对象编程必备“良方”(欢迎大家来补充!)

前言:c++面向对象中的繁琐机制,不得不让你在编程中频频“犯病”,找错误,找bug,困扰,是你的病源所在,本人虽不是什么“良医”, 却也算是总结出以下“良方”。注:难免会有记忆上的遗漏,知识上的不够,遗漏之处还需大家来补充啊!http://blog.youkuaiyun.com/zhanxinhang 药方1 ☞ 必需时刻明白面向对象编程中要扮演的两个角色,一个就是你,类的设计者,一个就是用户,

花心龟 cabin 3万+

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法

其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源;

sjr1478的博客 374

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据 下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数,其他项目想要调用数据集的话,就可以调用load_mnist函数,得到一个字典类型的数据,字典的值是一个Numpy数组。 这些过程是如何实现的,现在开始逐字逐句分析源码: 在load_mnist函数中第

及时总结 4268

C++重要知识点总结(简答题,期末考试 面向对象难点 类和对象)精华在后面

为什么基类的析构函数一定要定义为虚函数? 纯虚函数和不能实例化的抽象类存在的必要性? 为什么派生类指针不能指向基类对象?

afaxwy的博客 3050

YOLOv8+BiFPN双向特征金字塔:多尺度目标检测精度提升28%的实战教程

双向特征金字塔网络(BiFPN)是一种强化多尺度特征融合支持“自顶向下+自底向上”的双向特征流动,同时保留不同尺度的细节信息;引入加权融合机制,自动学习不同特征的重要性权重;裁剪冗余节点,在轻量化的同时提升融合效率。

m0_64661770的博客 492

c++面向对象编程必备“良方”

前言:c++面向对象中的繁琐机制,不得不让你在编程中频频“犯病”,找错误,找bug,困扰,是你的病源所在,本人虽不是什么“良医”, 却也算是总结出以下“良方”。注:难免会有记忆上的遗漏,知识上的不够,遗漏之处还需大家来补充啊!http://blog.youkuaiyun.com/zhanxinhang 药方1 ☞ 必需时刻明白面向对象编程中要扮演的两个角色,一个就是你,类的设计者,一个就是用

JamesLi6的博客 538

全覆盖路径规划开源项目Clean-robot-turtlebot3关键函数解析(上)

本系列文章主要介绍全覆盖路径规划开源项目Clean-robot-turtlebot3的相关内容,包含如下四篇文章,分别介绍了开源项目Clean-robot-turtlebot3流程的概括总结、ROS坐标系常用坐标及其变换、Clean-robot-turtlebot3关键函数解析等内容。

慕羽★的博客 2778

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: Lca 最近公共祖先
下一篇: 最近需要看的博文
robertin
博客等级 码龄16年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值