
C++
文章平均质量分 75
crazy_programmer_p
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 之类型转换操作符
传统C语言的内部类型转换: C语言传统的转化很简单。 比如: double d=5.0; int a=(int)d; 这个感觉和java差不多。C++有四个内部类型转换操作符:const_cast,reinterpret_cast,static_cast,dynamic_cast。const_cast 用法:const_cast (e转载 2014-07-22 22:23:30 · 642 阅读 · 0 评论 -
C++ 关键字typeid 运行时类型检查
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。 dynam转载 2014-09-11 16:03:41 · 1721 阅读 · 0 评论 -
operator new
本文主要讲述C++ new运算符和operator new, placement new之间的种种关联,new的底层实现,以及operator new的重载和一些在内存池,STL中的应用。一 new运算符和operator new(): new:指我们在C++里通常用到的运算符,比如A* a = new A; 对于new来说,有new和::new之分,前者位于std转载 2014-09-11 16:31:54 · 830 阅读 · 0 评论 -
虚函数初始化顺序
classBed : virtualpublic furniture{public: Bed(int nWeight ):furniture(nWeight) { cout <<"床的构造" } voidsleep() { }}; //构造顺序,先是虚基类//再是非虚基转载 2014-08-28 20:37:07 · 2372 阅读 · 0 评论 -
C++对象创建过程
初看到这个题目,你可能会有些疑惑:C++类对象的创建还有什么好说的,不就是调用构造函数么?实际上情况并不是想象中的那么简单,大量的细节被隐藏或者被忽略了,而这些细节又是解决一些其他问题的关键,所以我们很有必要深入到这块"神秘"的区域,去探索鲜为人知的秘密。分配空间(Allocation)创建C++类对象的第一步就是为其分配内存空间。对于全局对象,静态对象以及分配在栈区域内的对象,对它们的内转载 2014-08-28 20:16:49 · 1274 阅读 · 0 评论 -
为什么静态成员函数不能是const
static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。 不能用const的原因: 这是C++的规则,const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall,而类中的static函数本质上是全局函数,调用规约是转载 2014-08-28 21:24:55 · 6136 阅读 · 3 评论 -
各种特殊函数为什么不能是虚函数
> 内联函数内联函数是在编译时期展开,而虚函数的特性是运行时才动态联编,所以两者矛盾,不能定义内联函数为虚函数。2> 构造函数构造函数用来创建一个新的对象,而虚函数的运行是建立在对象的基础上,在构造函数执行时,对象尚未形成,所以不能将构造函数定义为虚函数。3> 静态成员函数静态成员函数属于一个类而非某一对象,没有this指针,它无法进行对象的判别。转载 2014-08-28 21:13:21 · 586 阅读 · 0 评论 -
构造函数不能是虚函数的原因
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数转载 2014-08-28 20:06:04 · 534 阅读 · 0 评论 -
C++ 单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做转载 2014-08-12 17:06:14 · 366 阅读 · 0 评论 -
异常安全的C++类
题目:类CMyString的声明如下:class CMyString{public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); CMyString& operator = (const CMyString& s原创 2014-08-12 17:29:08 · 764 阅读 · 0 评论 -
C++ 虚函数
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的翻译 2014-09-19 17:01:02 · 737 阅读 · 0 评论 -
已序集合求交运算和求差运算
集合作为一种数据结构,其中的元素具有唯一性原创 2014-08-07 11:16:50 · 690 阅读 · 0 评论 -
C++ hash_map
为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典转载 2014-08-19 18:12:12 · 457 阅读 · 0 评论 -
朴素贝叶斯分类器 C++ STL 实现
学习C++STL已经有一段时间了,除了将树上的原创 2014-08-06 14:48:13 · 1706 阅读 · 0 评论 -
学习C++ 实践者之路
我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在各大国内论坛上,还是在comp转载 2014-08-05 12:08:49 · 629 阅读 · 0 评论 -
字典序法生成全排列
引言对一个给定数据进行全排列,在各种场合经常会用到。组合数学中,生成全排列的方法有很多,卢开澄老师的《组合数学》中就介绍了三种:序数法,字典序法,临位互换法等。其中以字典序法由于算法简单,并且使用的时候可以依照当前状态获取下一个状态,直到所有排列全部完成,方便在程序中随要随用,应用比较广泛,STL中的Next_permutation也是使用此法。算法定义首先看什么叫字典序,顾名思转载 2014-08-04 23:18:51 · 1898 阅读 · 0 评论 -
const 成员 static 成员 const static int 成员初始化
有关const成员、static成员、const static成员的初始化:1、const成员:只能在构造函数后的初始化列表中初始化2、static成员:初始化在类外,且不加static修饰3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化转载 2014-07-22 22:38:29 · 503 阅读 · 0 评论 -
C++ 重载 覆盖和隐藏
#include "stdafx.h" #include class CB { public: void f(int) { cout << "CB::f(int)" << endl; } }; class CD : public CB { public: void f(int,int) {转载 2014-09-03 21:42:36 · 629 阅读 · 0 评论