
C++
文章平均质量分 58
善良超锅锅
hello world!
展开
-
名字空间
定义语法: 比如定义名为mfc的名字空间 namespace mfc{int inflag;}要在程序中使用mfc中定义的变量可以在文件中加入using namespace mfc;或者:using mfc::inflag;这里的::是作用域运算符又叫域解析操作符或者在代码中直接mfc::inflag;例子:int i = 5;na原创 2012-08-28 16:40:00 · 1315 阅读 · 0 评论 -
指针常量和常量指针
区别 读法 意义原创 2015-06-10 17:43:13 · 1008 阅读 · 0 评论 -
C++const成员规则
越来越讨厌C++了,一个简单的const成员变量都搞得这么麻烦。概念:const成员变量、const成员函数、const类变量const成员变量是初始化后就不能再改变的。在整个过程中都始终如一。素以不允许有赋值操作。const成员函数是保证不会修改成员变量的成员函数。const类变量是指声明一个类变量时使用了const,比如const A a;意义:const成员变原创 2015-06-10 15:05:47 · 1064 阅读 · 0 评论 -
C++函数重载实现原理浅析
---------------------------------------------------献给所有和我一样还没拿到office的同学-----------------------------------------------------------------------------------原创 2013-10-15 11:22:31 · 4820 阅读 · 4 评论 -
C++笔记二:复制构造函数总结
复制构造函数(copy constructor) C++允许用一个对象初始化另一个对象。完成这个任务的叫复制构造函数。 复制构造函数的调用时机 用同类型的对象显式或隐式初始化一个对象。(包括复制初始化和直接初始化) 将一个类对象作为实参传递给一个函数。(非引用类型参数。) 从函数返回一个原创 2013-05-15 11:16:40 · 1460 阅读 · 2 评论 -
C++笔记三:赋值操作符
赋值操作符 内置类型可以直接赋值,类也应该定义对该类型对象赋值会发生什么。和拷贝构造函数一样,如果类没有定义自己的赋值操作符,编译器就会为类合成一个。 CBox box1,box2; box1 = box2; 赋值操作符重载 重载操作符是一些函数,其名字为operator后跟着所定义的操作符的符号。因此可以通过定原创 2013-05-13 22:19:03 · 1741 阅读 · 0 评论 -
C++笔记六:static类成员总结,以及利用C++类static成员实现单例模式
类的static成员 类的成员变量和成员函数都可以声明为static。 1.类的static成员是属于类的,为所以该类的实例对象共享但不是某个对象的组成部分。不管有没有创建、创建了多少类的实例,static成员存在且只存在一份拷贝。 2.static成员同样受访问权限的约束。 3.可以通过作用域操作符从类直接访问st原创 2013-05-13 02:38:09 · 2686 阅读 · 0 评论 -
C++笔记五:const对象总结
const对象 如果你想定义一个永远都不会改变的类对象,可以像下面这样定义一个const对象const CBox standard(10.0,10.0,10.0);standard对象的成员变量的值将永不会改变。编译器为了保证const对象不会改变,不允许调用const对象的非const成员函数。即使这个非const成员函数确实没有改变任何成员变量的值。原创 2013-05-12 23:14:04 · 1644 阅读 · 0 评论 -
C++笔记一:类的构造函数
默认构造函数如果你定义一个类,并且没有给它定义构造函数。编译器会为这个类提供默认的构造函数。如果你提供了构造函数,编译器是不会再为你提供一个默认构造函数的。编译器提供的默认构造函数什么都没做。类的成员变量将遵守默认的初始化规则。编译器提供的默认构造函数的初始化规则:在栈和堆中的类对象的内置或复合类型成员变量将为脏数据;在全局变量区的类对象的内置或复合类型成员变量初始化为0;类对原创 2013-05-12 10:00:54 · 1406 阅读 · 0 评论 -
C++笔记四:友元
友元 friend 有时候你需要访问一个类的所有成员,而这种访问方式在逻辑上又不是被访问类的接口。你也不希望破坏类的权限机制。比如你希望能给你的宠物对象取名字(宠物是不会自己取名字的),你又不希望其他人能给你的宠物取名字。这时候友元机制就出来了。你可以在宠物类中指定主人类、你的好友类为友元。只让他们可以访问宠物类的名字属性。还有被重载的操作符,经常需要访问类的私有数据,这原创 2013-05-12 16:23:21 · 1294 阅读 · 0 评论 -
文件IO遇上中文字符
本来想用文件保存几个字符串,其中还有汉字的字符串。因为是用MFC做的,所以我自然想到用MFC提供的CFile类来文件IO。但是CFile不能一条一条记录(用回车符分隔的字符串)的读取。于是我改用CStdioFile类,可是CStdioFile::WriteString和Readstring进行文件IO时对中文的支持不好,要么是不能写入中文到文件中,用么是不能从文件中读入中文。文本模式和二进制模式我原创 2013-03-15 02:12:58 · 1516 阅读 · 0 评论 -
读书笔记--类的抽象【图文】
如果你无法让初学者明白一件事,说明你没有真正弄懂它。 类是一种抽象数据类型。抽象数据类型是指一些数据以及对这些数据所进行的操作的集合。抽象数据类型可愿意让你像现实世界中一样操作实体,而不是在底层的实现上摆弄实体。这是令人兴奋的!你不必在队列中插入一个节点或删除一个节点了,而是添加一个员工记录、删除一个员工记录。你不是在改变一个整型变量的值,而是在换另一支不同颜色的原创 2013-01-15 12:25:59 · 1409 阅读 · 0 评论 -
记一个烦了我一下午到半夜的编程错误!free(): invalid next size (fast): 0xb73004e8 ***
调试了半天,定位到是delete引起的奔溃,我怀疑了好久是不是申请内存后,指针操作出了问题,导致向没申请的内存区域写入了东西,导致释放出了问题。可是这个delete有时候出问题,有时候又不会。后来在校论坛上发帖,得到了提醒。可能是我申请内存和释放内存的语句出了问题,我居然之前没想到过这一点。是这样的:我原来的代码为:char *msg2 = new char(2+(原创 2012-12-23 01:01:26 · 8827 阅读 · 13 评论 -
条款09:不要在构造过程和析构过程中调用 virtual 方法
条款09:不要在构造过程和析构过程中调用 virtual 方法问题背景我们知道通过指针或引用调用对象的虚函数会触发动态绑定,根据对象的实际类型调用对应的版本。但是如果是在构造函数或析构函数中调用 virtual 函数呢?构造函数的特殊之处在于,当创建一个扩展类对象时,先调用基类的构造函数,此时扩展类的成员变量都未初始化(某种意义上扩展类部分还不存在),如果此时在基类的构造函数中调用一个 virtua原创 2017-08-11 10:45:08 · 680 阅读 · 0 评论