![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++调试
记录使用C++时遇到的各种奇奇怪怪bug
赴星辰大海
这个作者很懒,什么都没留下…
展开
-
C++之常引用对象只能调用常成员函数、重载为成员函数和友元函数的区别
近日写了一道题,遇到了新bug,使博主对C++的逻辑严密性有了更深的体会,特写此博客。本文标题是对两个bug的总结,即本文内容分为两部分。 题目如下: 设计一个CShape抽象类,类中包含纯虚函数 从CShape类派生出三角形类CTriangle、矩形类CRectangle和椭圆类CEllipse 使用一个公共接口计算三角形对象、矩形对象和椭圆对象的面积 重载运算符>用于判断两个形状面积的大小,返...原创 2020-05-16 18:18:30 · 1773 阅读 · 3 评论 -
解决C++运算符重载时=和+(或-、*、/、后置自增自减)无法连用
背景题目:定义有理数类(分母不为0的分数,分子分母均为整数)Rational,实现相应操作符的重载。(1)定义私有数据成员:分子int iUp; 分母 int iDown。(2)定义私有成员函数:void Reduce() 和 int Gcd(int l, int r),分别用于有理数的约简和求两个整数的最大公约数。其中,在约简时需要求取分子与分母的最大公约数。(3)定义构造函数,在构...原创 2020-04-20 22:53:57 · 2440 阅读 · 0 评论 -
VS2019跑C++时遇到“无法打开 E:\Project\Debug\Project.exe 进行写入”怎么办
今天写代码遇到一个从没遇到过的情况,想跑代码,结果报错,报错提示的主要内容为“无法打开 E:\Project\Debug\Project.exe 进行写入”。这一定不是代码本身的问题,因为我之前跑相同的代码还可以运行的。在我上网查询后,终于明白:导致这一情况发生的原因是上次运行代码对应的进程没有停止,可能是调试模式没有关闭成功,或者是控制台窗口没有关闭,或者是程序运行完后虽然关闭了控制台窗口,但...原创 2020-04-20 22:03:04 · 13118 阅读 · 4 评论 -
记录使用深搜DFS时因没有保存枚举数据犯的错误
题目:全排列问题Description输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。Input第一行为一个整数n。Output由1至n组成的所有不重复的数字序列,每行一个序列。每个数字之间由空格隔开。Sample Input 1 Sample Output 13 ...原创 2020-04-13 15:26:29 · 186 阅读 · 0 评论 -
解决Visual Studio 2019写C++时显示全局变量标识符不明确
今天写代码遇到一个超奇怪bug,已经定义好的全局变量data数组居然被提示不明确。但是在Visual Studio Code里又没有报错,百思不得其解,在上网查询后,我了然了,不明确即是发生了二义性的意思,因此很有可能Visual Studio 2019的内库里也有叫data的函数之类的,在未加域标识符时编译器就不知道这个data是哪个data了。验证如下:所以解决方案有两种,要么在所有da...原创 2020-04-08 18:14:56 · 23815 阅读 · 12 评论 -
解决Visual Studio 2019运行C++时无法打开源(头)文件time的问题
今天写代码,因为想计算程序的运行时间,需要使用time头文件里的功能,所以包含了头文件time(#include<time.h>),但是我写完后include就标红了,报错提示“无法打开源文件 time”,在网上查到了好几种解决方法,都不奏效,最后灵机一动,在配置里的包含目录里加入time文件的路径,终于解决了。以下为操作步骤:1.选择调试下的Project属性2.选择配置属性下的...原创 2020-04-08 17:14:09 · 16235 阅读 · 1 评论 -
解决Visual Studio Code运行C++代码时显示CLOCKS_PER_SEC未定义的问题
今天写代码,突然想知道程序运行时间,于是我在代码里包含了time头文件,include没有标红,但是在出现CLOCKS_PER_SEC的地方却标了红,显示未定义标识符CLOCKS_PER_SEC我寻思,这不对劲,time文件里不定义着吗?怎么会未定义,但是我看到上方的提示,原来CLOCKS_PER_SEC是一个整型量,数值为1000,那我不妨自己定义。于是我在代码的顶部进行宏定义,没有标红了,且...原创 2020-04-08 17:34:59 · 2809 阅读 · 0 评论 -
C++用cin接收不了中文字符、继承的实现原理、菱形继承的解决方法
今天写了一道题,就遇到了3个问题可谓是收获颇丰。话不多说,先上题目:(1)定义人员类Person:公有成员:姓名(Name);保护成员:性别(Gender),年龄(Age);实现构造函数和析构函数(2) 从人员类Person派生学生记录类StudentRecord:添加公有成员:学号(Number),班级(ClassName),添加静态公有成员:学生总人数(TotalCount);...原创 2020-04-06 15:49:44 · 2060 阅读 · 0 评论 -
C++之STL:用const修饰vector作为函数参数要小心(const iterator与const_iterator的区别)(写循环的偷懒办法auto)
今天写代码又遇到了新的bug,虽然最后解决了,但是任然不明白其缘由,故先行记录之。经实验,以下2种写法均会报错: void outVector(const vector<int>& vec) { for(vector<int>::iterator it=vec.begin();it!=vec.end();it++) cout<<...原创 2020-03-27 17:04:23 · 2900 阅读 · 0 评论 -
C++不允许函数嵌套定义!(或C++不允许在main函数定义中定义函数)
今天编写程序遇到了一个奇怪的bug,场景可以概括为“我在main函数中定义了函数,并且调用,看起来没有任何问题但是怎么改都不行”。出问题的代码是这样的:#include <iostream>#include <vector>using namespace std;void out_vector(vector<int> &vec)//构造函数打...原创 2020-03-26 23:24:32 · 9718 阅读 · 0 评论 -
C++之类内静态常量的定义及初始化的稳定写法
今天刷学校的OJ,题目要求创建一个圆柱体类,并在其内定义一个公有的静态常量Pi,于是乎我遇到了一个让我头大的问题,就是类内静态常量的定义及初始化,我边查边试了很多种写法,才终于搞定,现在简单总结如下:1)比较稳定的写法(OJ平台并不完全支持C++11的情况下):这种写法不挑平台,非常好。class Cylinder{ ...public: static const double P...原创 2020-03-09 23:49:12 · 1382 阅读 · 5 评论 -
C++之输出超限的解决
今天写学校OJ平台上的一道题,我遇到了让我无从debug的情况:我写完程序后编译运行,黑框框跳出来后我想输入数据,但是当我按着数字键时屏幕上却没有任何字符出现,自然程序也没有任何输出。我打算启动调试模式,我设置了断点以后,还是于事无补。程序运行到一个“点”就卡住了,点什么按键都不动,不能退出调试,也不能重新开始,只能关闭编辑器顺带关闭程序。实在没有头绪找bug,我只好把代码提交给OJ系统,OJ系统...原创 2020-03-10 12:29:41 · 11514 阅读 · 0 评论 -
C++之编译器自动提供构造函数的不同情况
今日写题又遇新bug,先上题目:设计用于表示点、线和三角形的类:Point、Line和Triangle,要求如下:(1)Point类中包含两个用于表示点的X和Y坐标分量的公有数据成员,能够根据指定的X和Y坐标构建点对象。(2)Line类中包含两个用于表示线段端点的私有对象成员,能够根据指定的两点构造线段对象(要求构造函数的参数为常引用),具有计算线段长度的公有成员函数。(3)Trian...原创 2020-03-16 23:19:43 · 582 阅读 · 0 评论