自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Augusdi的专栏

攀登技术的高峰,我与大家共勉!

  • 博客(118)
  • 资源 (5899)
  • 收藏
  • 关注

转载 成员初始化表

成员初始化表#include class Account {public:Account();Account( const char*, double=0.0 );Account( const string&, double=0.0 );Account( const Account& );// ...private:// ...}; //注意:构造函数的初始化列表只在构造函数的定义中指定,而不在声

2014-07-29 16:46:03 2145

转载 拷贝构造函数

拷贝构造函数有三种情况,会以一个object的内容作为另一个class object的初值。最明显的一种情况当然就是对一个object做明确得初始化操作,像这样:class X{…};X x;//明确地以一个object的内容作为另一个class object的初值X xx = x;另两种情况是当object被当做参数交给某个函数时,以及当函数传回一个class object时。假设class设计

2014-07-29 16:44:39 1696

转载 指向数据成员的指针

指向数据成员的指针指向数据成员的指针,是一个有点神秘又颇有用处的语言特性,特别是如果你需要详细调查class members的底层布局的话。这样的调查可以用于决定vptr是放在class的起始处或者尾端。另外一个用途是可以用来决定class中的access sections的次序。考虑下面的Point3d声明。其中有一个virtual function,一个static data member,以

2014-07-29 16:42:55 1583

转载 链接指示符extern “C”

链接指示符extern “C”extern“C”的使用方式如果程序员希望调用其他程序设计语言(尤其是C)写的函数,那么,调用函数时必须告诉编译器使用不同的要求。例如,当这样的函数被调用时,函数名或参数排列的顺序可能不同,无论是C++函数调用它,还是用其他语言写的函数调用它。程序员用链接指示符(linkage directive)告诉编译器,该函数是用其他的程序设计语言编写的,链接指示符有两种形式:

2014-07-29 16:41:50 2293

转载 数据成员的布局

数据成员的布局已知下面一组数据成员:class Point3d{public://…private:float x;static List *freeList;float y;static const int chunkSize = 250;float z;}非静态数据成员在class object中的排列顺序将和其被声明的顺序一样,任何中间介入的静态数据成员如freeList和chunkSize

2014-07-29 16:41:37 1734

转载 C++中的虚函数

C++中的虚函数(virtual function)简介缺省情况下,类的成员函数是非虚拟的。当一个成员函数为非虚拟的时候,通过一个类对象(指针或引用)而被调用的该成员函数,是该类对象的静态类型中定义的成员函数。当成员函数是虚拟的时候,通过指针或引用而被调用的该成员函数,是在该类对象的动态类型中被定义的成员函数。但是,正如所发生的,类对象的静态和动态类型是相同的,所以虚拟函数机制只在使用指针和引用时

2014-07-29 16:38:00 1452

转载 指向函数的指针

指向函数的指针假定我们被要求提供一个如下形式的排序函数:sort( start, end, compare );start 和end 是指向字符串数组中元素的指针。函数sort()对于start 和end 之间的数组元素进行排序。compare 定义了比较数组中两个字符串的比较操作。该怎样实现compare 呢?我们或许想按字典顺序排序数组内的字符串,或许想按长度排序它们,以便将最短的字符串放在前

2014-07-29 16:38:00 1504

转载 C++中指向成员函数的指针

指向成员函数的指针       取一个非静态成员函数的地址,如果该函数是nonvirtual,则得到的结果是它在内存中真正的地址。然而这个值也不是完全的,它也需要被绑定于某个class object的地址上,才能够通过它调用该函数。所有的非静态成员函数都需要对象的地址(以参数this指出)。一个指向成员函数的指针,其声明语法如下所示:double      //return type(Point:

2014-07-29 16:37:27 1546

转载 C++中的成员函数

成员函数假设有一个Point3d的指针和对象:Point3d obj;Point3d *ptr = &obj;当进行如下操作:obj.mormalize();ptr->normalize();时,会发生什么事情呢?其中的Point3d::normalize()定义如下:Point3d Point3d::normalize() const{    register float mag = magni

2014-07-29 16:36:22 5312

转载 C++中对象的大小

C++中对象的大小需要多少内存才能表现一个class object?一般而言要有:n  其nonstatic data members的总和大小;n  加上任何由于字节对齐需要而填充上去的空间(可能存在与members之间,也可能存在于集合体边界);n  加上为了支持virtual而由内部产生的任何额外负担。 C++中实际对象的大小,不同编译器的实现是不一样的,以下仅讨论.net2008,其他编译

2014-07-29 16:19:47 1689

转载 RTTI 运行时类型识别

RTTI 运行时类型识别《c++ primer》3thRTTI(运行时类型识别)允许“用指向基类的指针或引用来操纵对象”的程序能够获取到“这些指针或引用所指对象“的实际派生类型。在c++中,为了支持RTTI,提供了两个操作符:1、dynamic_cast 操作符,它允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转换类型,把基类指针转换成派生类指针,或把指向基类的左值转换成派生类

2014-07-29 16:19:01 1332

转载 嵌套类 局部类

嵌套类局部类《c++ primer 3th》嵌套类一个类可以在另一个类中定义,这样的类被称为嵌套类。嵌套类是其外围类的一个成员。嵌套类的定义可以出现在其外围类的公有、私有或保护区中。嵌套类的名字在其外围类域中是可见的,但是在其他类域或名字空间中是不可见的,这意味着,嵌套类的名字不会与外围域中声明的相同名字冲突。例如:class Node { /* ... */ };class Tree {publ

2014-07-29 16:18:12 1390

转载 public private 和protected 继承

public private 和protected 继承 在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public继承是最为常用的一种继承关系,private继承是最少见的继承关系。1. public从语义角度上来说,public继承是一种接口继承,根据面向对象中的关系而言就是,派生类可以代替基类完成基类接口所声明的行为,也就是必须符合“Lisk

2014-07-29 16:16:20 1568

转载 shared_ptr解析

shared_ptr解析《超越C++标准库-Boost库导论》头文件: "boost/shared_ptr.hpp"几乎所有稍微复杂点的程序都需要某种形式的引用计数智能指针。这些智能指针让我们不再需要为了管理被两个或多个对象共享的对象的生存期而编写复杂的逻辑。当引用计数降为零,没有对象再需要这个共享的对象时,这个对象就自动被销毁了。引用计数智能指针可以分为侵入式(intrusive)和非侵入式(n

2014-07-29 16:15:00 1619

转载 auto_ptr解析

auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心地使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr所蕴含的价值与理念。  

2014-07-29 16:13:12 1281

转载 scoped_ptr解析

scoped_ptr解析《超越C++标准库-Boost库导论》头文件: "boost/scoped_ptr.hpp"boost::scoped_ptr 用于确保动态分配的对象能够被正确地删除。scoped_ptr有着与std::auto_ptr类似的特性,而最大的区别在于它不能转让所有权,然而auto_ptr却可以。事实上,scoped_ptr永远不能被复制或被赋值!scoped_ptr拥有它所指

2014-07-29 16:11:51 1522

转载 C++中const、volatile、mutable的用法

const、volatile、mutable的用法const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。例如:const int nValue

2014-07-29 15:57:55 1193

转载 虚拟继承

虚拟继承《c++ primer 3th》p813在缺省情况下,C++中的继承是按值组合的一种特殊情况。当我们写:class Bear : public ZooAnimal { ... };每个Bear 类对象都含有其ZooAnimal 基类子对象的所有非静态数据成员,以及在Bear中声明的非静态数据成员。类似地,当派生类自己也作为一个基类对象时,如:class PolarBear : public

2014-07-29 15:52:11 1391

转载 C++中的volatile用法

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:     1). 并行设备的硬件寄存器(如:状态寄存器)     2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic var

2014-07-29 15:51:16 1244

原创 C++中的多态-虚函数-纯虚函数-抽象类

这么一大堆名词,实际上就围绕一件事展开,就是多态,其他三个名词都是为实现C++的多态机制而提出的一些规则,下面分两部分介绍,第一部分介绍【多态】,第二部分介绍【虚函数,纯虚函数,抽象类】一 【多态】多态的概念 :关于多态,好几种说法,好的坏的都有,分别说一下:1指同一个函数的多种形态。个人认为这是一种高手中的高手喜欢的说法,对于一般开发人员是一种差的不能再差的概念,简直是对人的误导,然人很容易就靠

2014-07-29 15:41:15 2213 1

原创 虚拟继承与虚基类

虚拟继承与虚基类实际上是说了同一件事,只是不同的书表达不同,在这里还是推荐虚拟继承这种说法(因为有人总问虚基类是什么,这里可以解释为虚基类就是虚拟继承,一种继承的方式,有的书偏要把一个动作写成一个名词,不负责任)。虚拟继承是C++继承的一个特殊方法,用来达到特殊的目的。要达到什么目的呢?那就是避免继承机制下的二义性问题(二义性:程序产生两种或多种可能,把编译器搞的不知所措) 继承机制下的二义性一般

2014-07-29 15:27:50 1597

转载 数据成员的存取与布局

数据成员的布局已知下面一组数据成员:class Point3d{public://…private:float x;static List *freeList;float y;static const int chunkSize = 250;float z;}        非静态数据成员在class object中的排列顺序将和其被声明的顺序一样,任何中间介入的静态数据成员如freeList和c

2014-07-29 15:12:16 1305

转载 关于C++中的虚拟继承的一些总结

新随笔联系管理2014年7月>日一二三四五六293012345678910111213141516171819202122232425262728293031123456789统计随笔 - 75文章 - 16评论 - 320引用 - 0公告昵称:VincentCZW园龄:2年2个月粉丝:133关注:8+加关注搜索  常用链接我的随笔我的评论我的参与最新评论我的标签随笔分类(76)Android(1

2014-07-29 15:02:36 1141

转载 智能指针类

除了使指针成员与指针完全相同之外,另一种方法是定义所谓的智能指针类。智能指针除了增加功能外,其行为像普通指针一样。本例中让智能指针负责删除共享对象。用户将动态分配一个对象并将该对象的地址传给新的 HasPtr类。用户仍然可以通过普通指针访问对象,但绝不能删除指针。HasPtr 类将保证在撤销指向对象的最后一个 HasPtr 对象时删除对象。       新的 HasPtr 类需要一个析构函数来删除

2014-07-29 15:01:42 1198

转载 C++ Primer 笔记--13章:定义值型类

要使指针成员表现得像一个值,复制 HasPtr 对象时必须复制指针所指向的对象。复制构造函数不再复制指针,它将分配一个新的 int 对象,并初始化该对象以保存与被复制对象相同的值。每个对象都保存属于自己的 int 值的不同副本。因为每个对象保存自己的副本,所以析构函数将无条件删除指针。赋值操作符不需要分配新对象,它只是必须记得给其指针所指向的对象赋新值,而不是给指针本身赋值。

2014-07-29 14:50:31 1092

原创 C++中static要点总结

C++中static要点总结1、静态成员的提出是为了解决数据共享的问题。2、因为静态成员函数是属于类的一部分,而不是某个对象的一部分,因此静态成员函数没有this指针,this指针是用于指向某个对象的。又因为静态成员函数没有this指针,因此在静态成员函数中不能直接调用非静态成员,因为非静态成员都是通过指向对象的this指针隐式或显式调用的。在静态成员函数的实现中不能直接引用类中说明的非静态成员,

2014-07-29 14:44:18 1196

转载 陈皓:C++ 虚函数表解析----笔记

文章链接:http://blog.csdn.net/haoel/article/details/1948051虚函数表        C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。       对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual T

2014-07-29 14:29:39 1920

转载 陈皓-C++ 对象的内存布局(上):笔记

单一的一般继承代码如下:

2014-07-29 14:11:39 1308

转载 vim常用命令

注意事项:       修改完代码之后,一定要保存,再重新编译。一、光标移动1、向后移动w:使得光标向前移到一个单词;b:向后移动一个单词;e:也是向前移到一个单词,但是将光标定位在单词的结尾处;ge:则是向后移到一个单词并到达前一个单词的结尾处。二、跳转1、跳至文件头尾       gg:文件头       G:文件尾2、返回之前的位置CTRL-O takes you back to older

2014-07-29 14:01:58 1342

转载 父类指针向子类指针的强制类型转换

结论:定义一个父类对象,将该父类对象的指针强制类型转换为子类指针,并赋给一个子类指针,则:该子类指针将指向该父类对象,但是其this指针仍然是指向子类的指针。当该指针调用虚成员函数时,将按照对象的内存布局(指向虚函数表的指针存储在该对象的前四个字节)调用父类虚成员函数。当该指针调用普通成员函数时,将通过this指针调用位于代码段的该子类的成员函数。例1、非虚成员函数typedef void(*fu

2014-07-29 13:48:16 8230 1

转载 Virtual Inheritance

C++ primer:Virtual Inheritance:A base class is specified as being derived through virtual inheritance by modifying its declaration with the keyword virtual.个人修正:A base class is specified as being deri

2014-07-29 13:25:12 1379

转载 c++ virtual总结

c++是一门面向对象的语言,但是它和c#,java不同,它没有反射机制。没有反射机制使得c++在语言的一些设计方面与其他语言有点不一样,主要体现在智能化方面,许多东西得程序员明确指定,例如本文要讲的virtual关键字。virtual是在运行时才体现的,而c++在运行时无法使用反射来确定当前类的父类是否有此方法,此方法是否被重载等信息,所以必须在写代码时用virtual来明确指明,然后通过编译器做

2014-07-29 12:50:58 1339

转载 Virtual Destructor

Base *b = new Derived();// use bdelete b; // Here's the problem!如果析构函数不是虚函数,则运行哪个析构函数是由该指针的类型决定的。如上例,若类Base的析构函数不是虚函数,而b指向的类型是派生类型的,此时delete b是undefined behaviour。若果析构函数是虚函数,则运行哪个析构函数由该指针指向的对象的类型决定。

2014-07-29 12:50:42 1467

转载 Function Pointer of class member function (类的成员函数指针)

From:http://blog.csdn.net/hairetz/archive/2009/05/06/4153252.aspx个人感觉对于类的成员函数指针这块讲解的比较深入详细推荐阅读///////////////////////////////////////////////// 先看这样一段代码 class test {    public:       test(int i){ m_i=

2014-07-29 11:36:28 1601

转载 虚函数的真相(VC编译器如何实现“virtual ”规则)

可到 CSDN 下载中心下载全文 http://download.csdn.net/detail/Dreamcode/201005 ( 1 )virtual 虚函数 先看一段简单代码:基类的“Output”函数是个虚函数。那么,很明显地,程序的运行结果将是: ( 2)  virtual function table  虚函数表先来分析我们的main函数中的Derive类的对象obj,看看它的内存布

2014-07-29 11:01:29 1647

转载 virtual function的两个优化

http://www.humus.name/index.php?page=Comments&ID=321http://www.gamedev.net/reference/articles/article2763.asp 这俩真是欢啊。 humus这篇说d3d的api都是virtual function call,这性能损失很心疼。所以就弄个callback函数,然后到d3ddevice的virtu

2014-07-29 10:57:29 1088

转载 virtual function的一些心得

virtual function是design上一个非常好的东西,它可以在保持面向接口编程的前提下做到运行时刻动态决定使用某一种实现。而且使得代码的语义表达,设计美感都好很多。问题就是virtual function太费了。对于pc平台来说,它是乱序执行的cpu,cache miss还可以忍受,对于console平台,这种顺序执行的处理器,cache miss会带来非常大的性能损失。virtual

2014-07-29 10:25:40 1503

转载 win32平台关于“pure virtual function call”的解释

本博客(http://blog.csdn.net/livelylittlefish )贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Explanation about “pure virtual function call” on Win32 platform Content0. Introduction1. an example2. Disassemble code

2014-07-29 10:14:47 2943

转载 Pure virtual function called

The C++ Source "Pure Virtual Function Called": An Explanation by Paul S. R. Chisholm February 26, 2007 AdvertisementSummary"Pure virtual function called" is the dying message of the occasional crashed

2014-07-29 10:14:04 2882

转载 The virtual functions table

To implement virtual functions, C++ uses a special form of late binding known as thevirtual table. The virtual table is a lookup table of functions used to resolve function calls in a dynamic/late bin

2014-07-29 10:05:11 1221

网络测试命令讲解

网络测试命令讲解

2015-01-17

Linux编辑器及VIM初步

Linux编辑器及VIM初步

2015-01-17

Linux下寻求帮助

Linux下寻求帮助

2015-01-17

在职教育3g学院-lamp经典入门29linux磁盘分区详解

在职教育3g学院-lamp经典入门29linux磁盘分区详解

2015-01-17

在职教育3g学院-lamp经典入门04linux目录结构介绍

在职教育3g学院-lamp经典入门04linux目录结构介绍

2015-01-17

Linux应用与发展

Linux应用与发展

2015-01-17

数据结构 C++ 语言描述(中文版)

数据结构 C++ 语言描述(中文版

2015-01-11

qt-win-opensource-src-4.5.2-msvc-6.0

qt-win-opensource-src-4.5.2-msvc-6.0

2014-09-08

qt-win-noncommercial-msvc-3.2.1

qt-win-noncommercial-msvc-3.2.1 qt-win-noncommercial-msvc-3.2.1

2014-09-08

KDE 2_Qt编程宝典

KDE 2_Qt编程宝典

2014-09-07

MBoo2014播放器

MBoo2014播放器

2014-09-07

数值分析与算法-徐士良著-随书源程序

数值分析与算法-徐士良著-随书源程序

2014-09-06

数据结构算法与应用-C++语言描述

数据结构算法与应用-C++语言描述

2014-08-15

[揭秘系列-离散数学]Discrete.Mathematics.Demystified

[揭秘系列-离散数学]Discrete.Mathematics.Demystified

2014-08-15

数据结构 C++ 版 (第2版) 王红梅等 扫描版

[数据结构 C++ 版 (第2版)] 王红梅等 扫描版

2014-08-15

数据结构 C语言版 CD

数据结构 C语言版 CD

2014-08-15

数据结构_C++

Data_Structures_with_C++_Using_STL.数据结构_C++语言描述.陈君

2014-08-15

C++面向对象算法数据结构

C++面向对象算法数据结构

2014-08-15

Unix_Linux 命令速查表

Unix_Linux 命令速查表

2014-08-15

linux命令大全

[教學]Linux 指令詞彙電子書 [教學]Linux 指令詞彙電子書

2014-08-15

linux查找及压缩

linux查找及压缩

2015-07-19

精通正则表达式-第3版-中文版.(美)Jeffrey.E.F.Friedl

精通正则表达式-第3版-中文版.(美)Jeffrey.E.F.Friedl

2015-07-01

普通人的编辑利器——VIM

普通人的编辑利器——VIM_(for_windows)

2015-03-11

VIM高级技巧

VIM高级技巧

2015-03-11

linux下vim使用详解(高清)

linux下vim使用详解(高清)

2015-03-11

vim使用教程

vim使用教程

2015-02-09

vim+ctags+cscope

vim+ctags+cscope

2015-02-09

Vim编辑器 VIM

Vim编辑器

2015-02-09

Linux下VI的使用

Linux下VI的使用

2015-02-09

Vim文件编辑命令

Vim文件编辑命令

2015-02-09

linux下vi使用

linux下vi使用

2015-02-09

功耗分析攻击研究及抗功耗分析攻击密码芯片设计

功耗分析攻击研究及抗功耗分析攻击密码芯片设计

2015-02-07

从RTL到GDSII_基于CPF的完整低功耗设计流程

从RTL到GDSII_基于CPF的完整低功耗设计流程

2015-02-07

YAKSOC芯片的物理设计研究

YAKSOC芯片的物理设计研究

2015-02-07

CIF和GDSII格式版图数据的直接转换

CIF和GDSII格式版图数据的直接转换

2015-02-07

linux 视频教程-gcc

linux 视频教程-gcc

2015-01-19

Linux高级程序_进程管理

Linux高级程序_进程管理

2015-01-17

Linux命令类库机制及常用命令_Shell命令机制

Linux命令类库机制及常用命令_Shell命令机制

2015-01-17

linux 视频教程PPT

linux 视频教程PPT

2015-01-17

CentOS.5系统管理

CentOS.5系统管理

2015-01-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除