![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
zhoulv2000
这个作者很懒,什么都没留下…
展开
-
模版的特化与偏特化
模版的特化与偏特化 (注意类模板和函数模板的区别) Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集. 1.模板的特化(template specialization): 例如,定义如下的一个模板: template class Widget {转载 2013-09-30 11:48:57 · 507 阅读 · 0 评论 -
面试问题系列:C/C++ const详解
一、const是什么在 C/C++ 语言中,const关键字是一种修饰符。所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告诉编译器,被修饰的这些东西,具有“只读”的特点。在编译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。所以,const修饰符的作用主要是利转载 2014-04-19 13:20:03 · 1090 阅读 · 0 评论 -
面试问题系列:c++学习推荐书籍
C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C#的狂潮终将原创 2014-01-02 19:02:35 · 889 阅读 · 0 评论 -
C++巧妙利用虚函数访问私有成员
在C++中,利用C++编译器在实现虚函数调用时的某些伎俩,我们可以在类外直接调用到类的私有成员函数!!代码如下,代码中有详细的说明。[cpp] view plaincopy//hacker.cpp: C++语言的黑客行为 #include class Coo{ private: int d; //特意将d放在转载 2014-04-18 09:07:58 · 1827 阅读 · 0 评论 -
GUN的__attribute__使用
1. __attribute__GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribu转载 2014-05-03 09:44:14 · 572 阅读 · 0 评论 -
STL之vector与deque比较
之所以专门把STL中的这两个拿出来说一说,是因为vector和deque都是支持随机访问的,其支持的迭代器类型都为随机访问,而不像map,set,list等都是支持双向迭代器的。vector,deuqe之对比:1:随机访问速度:vector > deque。2;deque性能损失比vector高几个数量级:因为deque首次插入一个元素时,会默认动态分配512字节空间,当这512字转载 2014-01-10 17:19:58 · 1476 阅读 · 0 评论 -
const、volatile、mutable详解
const、volatile、mutable的用法const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。例如:co转载 2013-12-29 19:12:32 · 505 阅读 · 0 评论 -
c++ 智能指针用法详解
本文介绍c++里面的四个只能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用。为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,但是我们不能避免程序还未执行到delete时就跳转了或者在函数中没有执行到最后的转载 2013-12-04 12:43:44 · 662 阅读 · 0 评论 -
C++多态详解
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。下面详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而原创 2013-11-05 09:17:56 · 627 阅读 · 0 评论 -
宏定义的作用域及其冲突
在C语言编程中,对一个比较大型的项目,用到的库会比较多,如果设计的稍有疏忽,便可能产生宏定义的冲突。项目中有一个例子就是发生在两个头文件都定义了“ISSPACE(ch)”这个宏,并且两个宏定义不太一致,从而导致了整个工程无法编译。解决该问题的方法是将该宏undefine,具体的做法是,在紧邻include语句之后对有冲突的宏进行undefine。例如库liba.h和头文件 app_pub.h就原创 2013-11-18 11:31:33 · 8356 阅读 · 0 评论 -
ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间,使用前需要加上或者;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(原创 2013-11-17 17:06:27 · 785 阅读 · 0 评论 -
C++ Traits
首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型:template typename T>class myIterator{ ...};当我们使用myIterator时,怎样才能获知它所指向的元素的类型呢?我们可以为这个类加入一个内嵌类型,像这样:template typename T>class myIterator{转载 2013-10-07 19:10:26 · 711 阅读 · 0 评论 -
STL内存分配器
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,STL中的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方面的转载 2013-10-07 21:52:00 · 642 阅读 · 0 评论 -
std::tr1::function使用
在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类的非静态成员函数时。可以参考Scott Meyers. >. Item 35。一、指向全局函数或静态成员函数时因为在本质上讲全局函数和静态成员函数没有区别,使用方法上除了静态成员函数在引用时要在前面加域作用转载 2013-10-07 13:06:41 · 592 阅读 · 0 评论 -
C++抽象基类和纯虚函数
为什么C++要定义抽象基类?C++为什么要定义抽象基类? 抽象类就是类里定义了纯虚成员函数的类。纯虚函数只提供了接口,并没有具体实现。抽象类不能被实例化,通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口。为什么要定义抽象基类呢?依我所见主要有以下原因:1. 最重要的原因是,可以将接口与实现分离。接口是软件产品最有价值的资源,设计接口比实现接口需要耗费转载 2013-09-29 20:30:44 · 1039 阅读 · 0 评论 -
C++虚函数和虚继承浅析
本文针对C++里的虚函数,虚继承表现和原理进行一些简单分析,有不对的地方请指出。下面都是以VC2008编译器对这两种机制内部实现为例。虚函数 一下是百度百科对于虚函数的解释:定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数[1]语法:virtual 函数返回类型 函数名(参数表) { 函数体 }用途:实现多态性,通过指向派生类原创 2014-04-08 20:15:58 · 611 阅读 · 0 评论