Welcome 微信登录

首页 / 软件开发 / C++

C/C++中一个简单的enum手法(idiom)

C/C++中一个简单的enum手法(idiom)

C/C++中一个简单的enum手法(idiom)2011-04-21 csdn博客 编程随想今天写程序的时候,又用到这个idiom了,于是顺便贴出来。这个idiom蛮简单的,估计很 多人都用过。今天主要是贴出来给新手参考(老手们就甭费时看此帖了)。为了说明这个手法具体该咋用,咱举一个简单的例子来说事儿。比方说要开发一个网络程 序,其中需要统计各种网络协议的数据包数量。★版本1假设一开始只需要处理HTTP和FTP两种协议。有些同学不假思索,立即会声明如下两个...
UDP实现简单的超时重传

UDP实现简单的超时重传

UDP实现简单的超时重传2011-04-21 51cto hello_world众所周知~UDP是一个无连接协议,因此靠它来传输的话是不可靠的,即使是数据包丢失 也不会报错。但是,在编写Linux上的socket程序时,却可以用简单的方法,在应用层实现超时 重传,让UDP可靠一些。(这次说的方法最好用于两个程序间通信——也许只能用 于两台机器通信)首先~我介绍一下Linux下,I/O操作的阻塞模式:在Linux下,I/O 操作有四种...
GetClientRect和GetWindowRect封装

GetClientRect和GetWindowRect封装

GetClientRect和GetWindowRect封装2011-04-21 博客园 众生皆苦做GUI程序设计,经常需要获取窗口的大小,典型的代码示例如下:CRect rcSize;::GetClientRect( hWnd, rcSize );这段代码获取了hWnd窗口客户区的大小.用的多了,就觉得每次都要事先声明一个临时 CRect变量很影响代码的美观,如果您也有同感的话那么如下封装可能会适合你:class CClientRect : public ...
C++/CLI的用途

C++/CLI的用途

C++/CLI的用途2011-04-21局部变量作为一个有着正常审美观的人,我简直无法忍受C++/CLI(以及managed c++)的丑陋。不 过,近来发现,这个丑东西也还有点用,在把原生开发接口包装成托管开发接口时,比C#的 互操作容易的多(互操作看了看,头大呀)。磕磕绊绊几天,终于把一个SDK开发包转换完成 了。总结经验如下:1. 对于clr中的引用类型,定义变量时要用个^符,如"String^ var1"、 "arra...
C++常量指针和指针常量

C++常量指针和指针常量

C++常量指针和指针常量2011-04-281、常量指针指向常量的指针变量的定义和使用如:const int *p;2、指针常量如:char* const p = "abcde";可以这么理解:const p的类型式char*,所以p是不可以再修改的。也就是所p必须是在定义时就已经初始化,并且不能再修改了。3、指向常量的指针常量指向常量的指针常量如:const int* const p = &b;可以这么理解int* const...
C/C++程序的内存分配方式

C/C++程序的内存分配方式

C/C++程序的内存分配方式2011-04-281.内存分配方式内存分配方式有三种:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个 运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执 行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高, 但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配。程序在运行的时候用ma...
C++中通过模板向函数传递数组长度

C++中通过模板向函数传递数组长度

C++中通过模板向函数传递数组长度2011-04-28我们知道,在C/C++中,向一个函数传递数组时,实际上传送的是这个数组的首地址,也即是一个指针类型。所以,在函数中,我们没有办法知道这个传递进来的数组的长度到底为多长,一个普遍的方法就是再增加一个参数,来记录传递进来的数组的长度。不过在C++中,使用模板机制,可以很好地解决这个问题,如下面的代码所示:#include <iostream>using namespace std;templat...
C++中的全局namespace

C++中的全局namespace

C++中的全局namespace2011-04-28我们应该知道传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就会可能出现名字的冲突。namespace引入了复杂性,解决了这个问题。namespace允许像类,对象,函数聚集在一个名字下。本质上讲namespace是对全局作用域的细分。我想大家都见过这样的程序吧...
C++中单例模式对象的释放控制分析

C++中单例模式对象的释放控制分析

C++中单例模式对象的释放控制分析2011-04-28单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有静态方法获取该...
C++中按值返回和返回值优化代码

C++中按值返回和返回值优化代码

C++中按值返回和返回值优化代码2011-04-28 csdn博客 SeeSeaBeeC++和C语言相比,最为人诟病的就是其性能问题,通常一条C语言经编译器解释后,可以固定转换成5—10条汇编语言,但是一条C++语言,就没有这么幸运了,可能会是3条汇编语言,也可能是300条。C++影响性能的原因很多,其中一个就是临时对象的创建和销毁。这里我简述一种减少创建临时对象的方法--返回值优化问题很多时候,函数需要按值返回,这其中就会不可避免地涉及到临时...
<< 131 132 133 134 135 136 137 138 139 140 >>