Learning C++
文章平均质量分 82
Crayondeng
这个作者很懒,什么都没留下…
展开
-
C++转换符:'reinterpret_cast', 'static_cast', 'dynamic_cast' 和 'const_cast'
为什么要进行类型转换?转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。 Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么? C 风格(C-style)强制转型如下: (T) expression转载 2013-08-07 17:29:35 · 1653 阅读 · 0 评论 -
Dangling pointer(悬垂指针、迷途指针)和 Wild pointer(野指针)
在原创 2014-05-02 10:18:23 · 5803 阅读 · 1 评论 -
探究 C++ Singleton(单例模式)
一、静态化并不是单例模式 初学者可能会犯的错误, 误以为把所有的成员变量和成员方法都用 static 修饰后, 就是单例模式了:class Singleton{public: /* static method */ private: static Singleton m_data; //static data member 在类中声明,在原创 2014-05-02 00:22:24 · 35680 阅读 · 8 评论 -
C++11 语法记录
一、Lambda表达式C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或ex原创 2014-01-20 20:38:33 · 6984 阅读 · 2 评论 -
STL list
下面介绍一下STL中的list(双向链表)。一、关于list:①STL中的list就是一双向链表,可高效地进行插入删除元素。②list不支持随机访问。所以没有 at(pos)和operator[]。二、list 的成员函数:list成员说明constructor构造函数destructo原创 2014-01-16 21:43:31 · 1529 阅读 · 0 评论 -
STL 栈,队列,优先队列用法
STL 中栈的使用方法(stack)#include stack>基本操作:push(x) 将x加入栈中,即入栈操作pop() 出栈操作(删除栈顶),只是出栈,没有返回值top() 返回第一个元素(栈顶元素)size() 返回栈中的元素个数empty() 当栈为空时,返回 trueSTL 中队列的使用(queue)#i原创 2013-11-15 00:52:44 · 13176 阅读 · 0 评论 -
C++继承:公有,私有,保护
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。在看这篇文章的时候,建议先将程序例子看一下,回头看一下说明,这样方便理解。说明:参考博客:http://www.cnblogs.com/qlwy/archive/2011/08/25/2153584.html 1. 公有继承(public)公有继承的原创 2013-11-07 23:52:10 · 4111 阅读 · 0 评论 -
C++ 函数指针 & 类成员函数指针
一、函数指针函数存放在内存的代码区域内,它们同样有地址.如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。1、函数指针的定义方式:data_types (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);例如:原创 2013-11-21 21:17:02 · 23428 阅读 · 5 评论 -
理解 static & extern
在c / c++语言中,经常会遇到这样两个关键字,static和extern,通过阅读网上的一些介绍和代码实践之后,下面稍作总结。一、首先单独介绍一下 static1.先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是file.cp原创 2013-10-27 17:09:47 · 2105 阅读 · 0 评论 -
关于前置声明与C++中头文件相互包含的几点问题
一个前置声明是指在程序员尚未给出完整定义之前对一个标示符(一个类型、一个变量或者一个函数)的声明。一个很简单的例子就是我们在函数A中使用了函数B,但是函数B的声明在函数A之后,这个时候,就需要对函数B进行前置声明,实际上就是在函数A之前提供一个函数B的原型(prototype)。这种现象其实在C语言编程中我们已经习以为常了,在C++中亦是如此,只不过在编写较大规模程序的时候,由于定义了较多的类,而转载 2013-09-01 16:44:42 · 6526 阅读 · 0 评论 -
C++中的function, bind 和 lambda
本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制。之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解。在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础。下面我们来看看wikipedia上对于计算机领域的closure的定义:转载 2013-08-16 09:59:55 · 8356 阅读 · 0 评论 -
C语言 内存分配 地址 指针 数组 参数 实例解析
指针简介 : 指针式保存变量地址的变量;-- 增加阅读难度 : 指针 和 goto 语句会增加程序的理解难度, 容易出现错误;-- ANSI C : American National Standards Institute 美国国家标准学会, 即标准C;-- 通用指针类型 : ANSI C中使用 void* 作为通用指针类型, 即指向void的指针, void 是空类型,转载 2014-05-02 10:22:34 · 2120 阅读 · 1 评论