C++
cfqcfqcfqcfqcfq
这个作者很懒,什么都没留下…
展开
-
Critical error detected c0000374
VS调试的时候出现的错误,查阅了网上一些资料,整理下面三种情况(归根到底都是内存访问错误,堆破坏)1、delete 两次float* dd=new float[2]; delete[] dd; delete[] dd;2、数组越界3、在DLL中使用std相关函数(如vector)...原创 2019-11-18 16:47:27 · 1980 阅读 · 3 评论 -
const、volatile、mutable的用法
const、volatile、mutable的用法const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如:const转载 2016-12-08 09:03:51 · 200 阅读 · 0 评论 -
Java枚举类和c++枚举类比较
详细阅读了相关java和c++有关枚举类的介绍。做一个总结 。 枚举类型使我们可以将一组常量组织在一起,和类一样,每个枚举类型定义了一种新的类型。java和c++不同之处在于: c++的枚举类型只能是整形常量(int 、long、short)。 java的枚举类是一个继承于Enum(java.lang.Enum 是一个抽象类)的自定义类。所以我们可以使用Enum中的方法,也可以原创 2016-12-29 17:07:02 · 1314 阅读 · 0 评论 -
c++ :vs2013 类内数组初始化问题
类内数组初始化 是c++11的一个新特性 本人使用的vs2013 update5版本并没有支持这一个新特性。原创 2016-12-20 12:38:25 · 3558 阅读 · 1 评论 -
c++:静态成员变量和静态成员函数使用问题
C++类静态成员与类静态成员函数 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。 静态数据成员的用途之一是统计有多少个对象实际存在。转载 2017-03-11 21:59:15 · 468 阅读 · 0 评论 -
c++:函数返回引用类型和非引用类型
函数的返回主要分为以下几种情况:1、主函数main的返回值:允许主函数main没有返回值就可结束;可将主函数main返回的值视为状态指示器,返回0表示程序运行成功,其他大部分返回值则表示失败。2、返回非引用类型:函数的返回值用于初始化在调用函数时创建的临时对象(temporary object),如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。在转载 2017-04-11 11:24:32 · 926 阅读 · 0 评论 -
const的用法,特别是用在函数前面与后面的区别!
在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所指向的对象,也不能改变 this所保存的地址。 关键字:Const,Const函数,Const变量,函数后面的Const看到con转载 2017-05-24 10:19:03 · 418 阅读 · 0 评论 -
模板类成员函数的定义和声明为什么要放在一个文件中
通常情况下,你会在.h文件中声明函数和类,而将它们的定义放置在一个单独的.cpp文件中。但是在使用模板时,这种习惯性做法将变得不再有用,因为当实例化一个模板时,编译器必须看到模板确切的定义,而不仅仅是它的声明。因此,最好的办法就是将模板的声明和定义都放置在同一个.h文件中。这就是为什么所有的STL头文件都包含模板定义的原因。”[1]"标准要求编译器在实例化模板时必须在上下文中可以查看到其定转载 2017-09-11 15:38:43 · 608 阅读 · 0 评论 -
c++模板编译模型
编译器只有在用到模板时,如调用了函数模板或调用了类模板的对象的时候,编译器才产生特定类型的模板实例。编译时,模板与普通函数、类的区别:普通函数,只需函数声明,声明与定义分离;类类型,类定义可用,但成员函数只需声明,成员函数声明与定义分离;模板,要进行实例化,必须包含函数模板或类模板成员函数的定义。标准 C++ 编译模板代码的两种模型:包含编译、分别编译转载 2017-10-12 08:57:13 · 294 阅读 · 0 评论 -
LoadLibrary函数详细说明
将指定的模块加载到调用进程的地址空间中。指定的模块可能会导致其他模块被加载。对于其他加载选项,请使用 LoadLibraryEx函数。LoadLibrary是一个宏定义:def UNICODE#define LoadLibrary LoadLibraryW#else#define LoadLibrary LoadLibraryA#endif // !UNICODEHMO...原创 2019-06-26 14:50:48 · 35635 阅读 · 0 评论 -
为什么静态成员函数不能是const
static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。 不能用const的原因: 这是C++的规则,const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall,而类中的static函数本质上是全局函数,调用规约是转载 2016-11-30 10:14:53 · 649 阅读 · 0 评论 -
c++多态性及对象链表
新手一枚,编写了一个简单的例子来说明c++多态性和链表对象的使用 例子描述: 基类 person(抽象类) 派生类:teacher 、worker 纯虚函数: 工资和身份 链表对象来管理一组对象(保存对象、输出信息、删除对象) 基类和派生类:class Person{public:原创 2016-11-16 11:45:43 · 1097 阅读 · 0 评论 -
c++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定转载 2016-11-16 08:31:57 · 272 阅读 · 0 评论 -
const用法
看到一篇博客讲const用法 讲的很细致 条理清晰 是个参考的好文档 转载一下 方便自己以后查阅const的用法,特别是用在函数后面在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所转载 2016-06-06 09:14:54 · 303 阅读 · 0 评论 -
引用头文件却找不到相对应的类
问题关键出现在头文件中,出现了定义冲突#ifndef MAINWINDOW_H#define MAINWINDOW_H#endif // MAINWINDOW_H每个头文件的开始和结束除会引用如下预处理器变量,而且该变量在程序中是唯一的,主要用来避免多重包含,可是如果你的预处理器变量名重复了 就会发生一些我们不希望的事情。原创 2016-07-24 11:36:43 · 2903 阅读 · 0 评论 -
new对象需不需要加括号
根据参考文献的提议 new对象最好加上括号,做到有备无患 点击打开链接原创 2016-07-02 16:24:21 · 566 阅读 · 0 评论 -
Qt\c++:指针虽好用,使用有风险
学习C++有一段时间了,c++中指针是十分好用的工具,也一直听大家将存在风险,使用稍不慎就会导致野指针(指空);虽然一直明白,但从未真正遇到过此类问题。最近在用Qt做一个程序时,真正的领略了一把野指针带来的危害,真是打脸之后,才领悟到其中真谛(痛的领悟) 描述一下问题: 程序的一个大概结构:在主界面中实例化了一个进度对话框和图形浏览器;在图形浏览器下实例化了一个图原创 2016-07-27 10:25:43 · 1363 阅读 · 0 评论 -
二叉树的实现
说明:使用Qt Creator完成 所以输入输出使用了Qt类。 二叉树的构建是按照前序顺序构建。 实现了前序、中序、后序遍历 提供了一些基本二叉树操作。 创建与删除结点交由BiTree统一管理,不提供对外接口BiTree.hstruct BiNode{ c原创 2016-09-25 10:36:02 · 407 阅读 · 0 评论 -
线索二叉树
二叉树作为存储结构只能保存其左右孩子结点信息,不能获取结点的前驱和后继信息。同时二叉树结构存在很多个空指针域。一个n个结点的二叉树会形成n+1个空指针域。可以利用这些空指针完成结点前驱和后继信息的补充。具体方法如下:将结点中lchild为空的指针指向其前驱结点;将结点中rchild为空的指针指向其后继结点。指向前驱和后继的指针称为线索。加上线索的二叉树结构称为线索二叉树。原创 2016-09-26 20:54:47 · 247 阅读 · 0 评论 -
c++动态类型转换
在项目中使用了QtPropertyBrowser作为属性浏览器。为了方便统一管理,将所有的属性项使用QtVariantProperty来设置。为了方便双向通信建立了两个映射:QMappropertyToId;QMap idToProperty;但在实际使用过程中发现QtPropertyBrowser中的所有信号和槽函数的形参都是QtProperty*类型。这与QMap中的类型不同,需要原创 2016-11-03 14:54:25 · 2785 阅读 · 0 评论 -
error: C2533: “MainWindow::{ctor}”: 构造函数不能有返回类型
主要原因是在定义类的时候,没有在类的最后面加上“;”原创 2016-10-27 17:45:47 · 589 阅读 · 0 评论 -
重写、覆盖、重载、多态几个概念的区别分析
原文连接:点击打开链接转载 2016-11-16 08:13:40 · 361 阅读 · 0 评论 -
类成员函数回调
如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员。由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为原创 2016-04-30 18:03:52 · 533 阅读 · 0 评论