
C++
文章平均质量分 72
小马识图
这个作者很懒,什么都没留下…
展开
-
C++中的引用
C++中的引用C++中引用和指针的概念常常被拿来对比,二者之间有非常相似的特性。这给初学者带来了困扰,特别是很多编译器使用了指针来实现引用,更增添二者之间扑朔迷离的牵连关系!本文仅就引用的特性做简要介绍,旨在帮助读者更好地理解引用的概念和避免常见的错误!引用的三大特性不存在空引用所有引用都要初始化引用所指向的对象不可更改仔细品味以上引用的三大特性,就会发现这三点都是相对于指针而言的。关于这三原创 2015-02-14 18:29:04 · 462 阅读 · 0 评论 -
C++11 Object初始化问题
C++11 中 类实例的初始化问题比较复杂。 这里涉及到实例的类型, (static vs non-static), 有没有自定义构造函数等等。对于static类型(全局变量,namespace变量,类static数据成员,函数static局部成员),class内部的成员变量都会使用默认值初始化. //Struct S1 w/o constructor struct S1 {原创 2016-03-11 12:21:14 · 624 阅读 · 0 评论 -
Bit field
c 语言中的bit field 是一种节省内存的方式, 用于struct 或者 union 的成员变量的声明。基本的语法是:struct BF { ... type_specifier [declarator] : constant_expression; ...};采用这样一种方式的好处是,我们可以明确地指定某一个成员变量在内存中占用的空间(constant_expression原创 2016-02-24 01:35:05 · 4458 阅读 · 0 评论 -
构造函数调用虚函数
今天看android canvas 类的源代码看到 Canvas的构造函数之一: public class Canvas{... public Canvas() { if (!isHardwareAccelerated()) { ... } else { ... } } publi原创 2015-08-04 14:06:02 · 692 阅读 · 0 评论 -
search - binary search
#include "stdio.h"#include "string.h"#define MAX_LIST 50typedef struct _SqList { int data[MAX_LIST]; int length;}SqList;int BinarySearch( SqList* L, int key ){ int low = 0; int high原创 2015-03-30 01:32:21 · 428 阅读 · 0 评论 -
sorting - merge sort
#include "stdio.h"#include "string.h"#define MAX_LIST 50typedef struct _SqList { int data[MAX_LIST]; int length;}SqList;enum MERGE_SORT_METHOD { RECURSE, ITERATE };void Merge( int src[], int原创 2015-03-28 03:45:25 · 522 阅读 · 0 评论 -
常量指针和指向常量的指针
经常C++程序员会提到“常量指针( const pointer )”, 其实他们想表达的意思往往是“指向常量的指针(pointer to const)”。 真不幸, 这是两个完全不同的概念。T* pt = new T; const T* pct = pt; //一个指向常量的指针T* const cpt = pt; //一个常量指针这里一定要弄清楚const 修饰符修饰的对象是 基础类型还是指针原创 2015-02-15 14:17:03 · 1041 阅读 · 0 评论 -
运行时类型信息RTTI
我们在写C++代码的时候经常碰到使用dynamic_cast进行类型转换的情况,也都知道经过dynamic_cast的转换更加安全,因为dynamic_cast进行了类型检查。 但是可能很多人不知道dynamic_cast是C++ 运行时类型信息(RTTI)机制链条上的一个节点。 RTTI提供了两个操作符和一个类: dynamic_casttypeidtype_info整个RTTI, 作为一原创 2015-03-19 18:45:07 · 1550 阅读 · 0 评论 -
类型转换操作符Cast Operators
C++ 类型转换操作符C语言的类型转换操作有其局限性,因此C++语言增加了4个类型转换操作符。reinterpret_castdynamic_caststatic_castconst_cast它们的语法都是一致的:xxxx_cast < type-id > ( expression )reinterpret_cast 对原始比特位重解释顾名思义,reinterpret 就是重解释,r原创 2015-02-27 20:59:25 · 843 阅读 · 1 评论 -
C++ function template name binding
为了简化讨论,本文仅对函数模板的的名称绑定进行总结概括,关于类模板的相关内容,以后再做讨论。Name BindingName Binding就是对模板定义中出现的名称(也称为构造’construct’,也包括操作符等),通过在相关的上下文中查询, 并绑定到声明的过程,比如,int all = 0;template<typename T>int sum(T* t, int s){ for原创 2016-05-28 04:02:18 · 2191 阅读 · 0 评论