
C++
文章平均质量分 62
Day_Day_UP
这个作者很懒,什么都没留下…
展开
-
windows同步和互斥总结
一、关键段(CRITICAL_SECTION)(非内核对象)使用关键段进行线程互斥时非常简单,只涉及到以下四个函数函数功能:初始化函数原型:void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);函数说明:定义关键段变量后必须先初始化。函数功能:销毁函数原型:void Dele原创 2015-06-16 19:47:23 · 848 阅读 · 0 评论 -
插入一序列的key-value的map
template class MapAssign{public: typedef std::map Map; typedef std::pair Pair; typedef std::deque Deque; MapAssign(void) try : m_qPairs() { } catch (..原创 2014-10-13 16:28:53 · 488 阅读 · 0 评论 -
规则引用声明符:&&
保留对右值表达式的引用。type-id && cast-expression转载 2014-08-18 17:16:54 · 572 阅读 · 0 评论 -
windows远程挂载
在VS2010中有支持远程挂载调试的工具,原创 2014-04-15 10:06:36 · 864 阅读 · 0 评论 -
如何在windows下VC++使用protobuf
Protocol Buffers(protobuf)是Google提供的一个开源序列化框架,类似XML,JSON,其最大的特点是基于二进制,比传统的XML表示同样一段内容要短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持c++、java、python等语言环境。通过将这些类包含在项目中,可以很原创 2014-03-31 11:28:06 · 1391 阅读 · 0 评论 -
define中#的作用
# 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串. 例如, 命令 #define to_string( s ) # s将会使编译器把以下命令 cout << to_string( Hello World! ) << endl;理解为 cout << "Hello World!" << endl;使用##连结##原创 2013-10-22 10:47:34 · 490 阅读 · 0 评论 -
C++右值引用
1、右值引用引入的背景临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题。但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision、RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝。下面简单地介绍一下Copy Elision、RVO,对此不感兴趣的可以直接跳过:(1) Copy Elision Co转载 2013-10-10 13:45:40 · 770 阅读 · 0 评论 -
C++模板类推导
#include "stdafx.h"#include #include #include #include #include #include using namespace std;/// \class LimitedCast/// /// \brief LimitedCast is used to cast string to differen原创 2013-05-07 13:56:10 · 648 阅读 · 0 评论 -
线程安全的单例模式的实现
C++编程语言是一个应用广泛的计算机应用语言,它功能强大,在一定程度上大大提高了程序开发效率。C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。定义一个单例原创 2013-05-06 11:00:22 · 554 阅读 · 0 评论 -
揭秘 typedef四用途与两陷阱
typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全。的确,转载 2013-04-18 10:28:32 · 428 阅读 · 0 评论 -
浅析C++中的define
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析1.1 #define的概念#define命令转载 2013-04-09 10:17:38 · 641 阅读 · 0 评论 -
C++ 模板类
在C++中,模板类最主要是解决这样的一个问题:多个类的功能相同,只是由于数据类型不同而不得不重复定义几个相似的类,导致无用的工作量增大和代码量增多。模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。具体实例:实现对两个整数比较、两个浮点数比较。则我们要重复定义下面两个原创 2013-02-27 18:24:54 · 350 阅读 · 0 评论 -
类的静态成员
C++静态成员包括了静态数据成员和静态成员函数。这里主要总结下它们的用法、性质等。 一:静态数据成员 在类体中的数据成员的声明前加上关键字static,则该数据成员就成为了该类的静态数据成员。和类的其他数据成员一样,静态数据成员也遵循public/protected/private访问规则。同时,静态数据成员还有以下一些特点: 1.静态数据成员的定义。原创 2013-02-18 14:58:29 · 527 阅读 · 0 评论 -
UML六大类图关系
在看类图的时候,经常会看到类与类之间的连接线是不一样的,常见的连接线一般包括6种,不同的连接线也代笔着类与类之间不同的关系。概括如下:在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Gen原创 2013-01-24 11:02:32 · 520 阅读 · 0 评论 -
C++创建对象的方式和区别
首先应该了解的是:编译器一般将内存分为三部分:静态存储区域、栈、堆。静态存储区主要保存全局变量和静态变量,栈存储调用函数相关的变量、地址等,堆存储动态生成的变量。 在c中是指由malloc,free运算产生释放的存储空间,在c++中就是指new和delete运算符作用的存储区域。 因此C++也相应的提供了两种方法来创建对象。 方法一: ClassA a(param); 这样就声明了原创 2013-01-10 17:14:30 · 352 阅读 · 0 评论 -
C++ 类的导出
C++ Dll 类的导出在应用工程中经常要用到别人提供的组件,并且这个组件经常是以dll提供的。那么如何将一个类进行dll导出。下面是一个很简单的例子:创建一个dll的工程,在这个工程中定义了一个简单的类Figure一:Figure工程包含的头文件和源文件如下① Figure.h#ifndef FIGURE_H#define FIGURE_H #if原创 2012-12-03 16:22:45 · 615 阅读 · 0 评论