
C/C++
文章平均质量分 78
ljob2006
这个作者很懒,什么都没留下…
展开
-
C++ 函数的引用返回值
引用是给变量取一个别名,所以引用传递会直接进行变量本身的传递。它的最大好处是可以把别处对变量的改变保留下来,第二好处是它提高了性能:如果函数的返回值是一个引用,那么,如上文所说,它会节约一组构造、赋值和析构过程。但是,函数返回引用往往会带来一些意想不到的错误:比如返回临时变量的引用。//一个错误的函数int &Max(int i, int j){ return i>j ? i : j;}原创 2009-03-19 20:59:00 · 1371 阅读 · 0 评论 -
C++的static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include转载 2009-07-02 19:11:00 · 299 阅读 · 0 评论 -
C/C++中Static的作用详述
1.先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c.下面是a.c的内容: char a = A; // global variablevoid msg(){printf("Hello/n"原创 2009-07-02 19:14:00 · 323 阅读 · 0 评论 -
如何使一个类只能实例化一个对象
如何使一个类只能实例化一个对象时间:2008-05-17 05:19:08 来源:论坛整理 作者: 编辑:chinaitzhe如何让类只能被实例化一个对象,也就是只能实例一次呢?网友回复:Single模式..网友回复:class A { private: static A* m_a; A(); public: static A* Instance()原创 2009-11-08 22:43:00 · 3046 阅读 · 0 评论 -
第四章 C++面向对象程序设计方法概述
第四章 C++面向对象程序设计方法概述 会用C++的程序员一定懂得面向对象程序设计吗?不会用C++的程序员一定不懂得面向对象程序设计吗?两者都未必。我曾经和很多C++程序员一样,在享用到C++语法的好处时便以为自己已经明白了面向对象程序设计方法。我就这样糊里糊涂地编写了十几万行C++程序,如此使用C++,就象挤掉牙膏卖牙膏皮那样,真是暴殄天物呀。本章目的不是阐述转载 2009-11-08 21:40:00 · 1024 阅读 · 1 评论 -
数组名 和 数组名取地址 的不同
由于习惯使用sizeof来判断一个变量的类型,而实验了一下:int array[100];memset(array, 0, sizeof(array));printf("sizeof(array)=%d, sizeof(&array)=%d/n", sizeof(array), sizeof(&array)); 发现sizeof(array)和 sizeof(&array)结果一转载 2009-11-25 16:22:00 · 463 阅读 · 0 评论 -
用对齐原则求结构体长度
size of int is: 4size of char is: 1size of short int is: 2size of double is: 8size of unsigned int is: 4size of float is: 4size of long double is: 8size of long int is: 4size of long int is: 4size of转载 2009-11-25 16:39:00 · 407 阅读 · 0 评论 -
C/C++数组名与指针区别深入探索
引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。 想必这种误解的根源在转载 2009-11-25 16:53:00 · 8346 阅读 · 25 评论 -
C++ 运算符优先级列表
http://www.cppreference.com/operator_precedence.html PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember a原创 2009-11-25 17:24:00 · 423 阅读 · 0 评论 -
sizeof(数组名)
#include using namespace std; void theFun(char a[]) { cout} int main() { char a[100]=" "; couttheFun(a); coutreturn 0; } 程序的输出结果为: 1:100 2:4 3:1 //相当于a[100]这个数所占的字节大小,也就是一个char字节占得大小 当数组作为函数的原创 2009-11-25 16:55:00 · 7545 阅读 · 2 评论 -
C语言中的volatile关键字
volatile修饰的确实是一个变量,而且是一个“容易变”的变量。在每次取这个变量值的时候,要求不是取它上次在某个时候取的临时缓存变量(比如说暂存在某个寄存器中),而是直接到内存中取。 volatile变量能防止优化,别如说你在某个地方可能连续调用了好几次这个函数,于是编译器优化后,可能就调用一次,其他几次就采用这一次调用的返回值,而volatile修饰后,要让每一次都进行函数调用, 而不转载 2009-08-29 11:48:00 · 691 阅读 · 0 评论 -
c语言中的volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。 没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保 存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,原创 2009-08-29 11:41:00 · 245 阅读 · 0 评论 -
堆和栈
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构 。 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 要点: 堆:顺序随意 栈 :后进先出(Last-In/First-Out)堆和栈的区别 一、预备知识 —程序的内存分配 一个由c/C++ 编译的程序占用的内存分为以下几个部分转载 2009-08-19 15:43:00 · 253 阅读 · 0 评论 -
字符串函数的实现
字符串函数实现代码: #include #include int strCompare(const char *s1, const char *s2){ int iRet=0; while(*s1!=NULL||*s2!=NULL) { if(*s1!=*s2) { iRet=*s1-*s2; return iRet; }原创 2009-03-18 13:58:00 · 404 阅读 · 0 评论 -
编写类String的构造函数、析构函数和赋值函数
编写类String的构造函数、析构函数和赋值函数源代码:#include #include char* strCopy(char* pDest, const char* pSrc){ assert((pDest != NULL) && (pSrc != NULL)); char *pTmp = pDest; while (*pSrc!=/0)原创 2009-03-18 14:22:00 · 1319 阅读 · 0 评论 -
C++函数返回值类型
C++语言的函数返回值类型可以分为内部类型和自定义类型两大类。 在函数返回内部类型中不能返回数组类型但可以返回指向数组的指针,同样也可以返回指向函数的函数指针。如果希望返回值可以作为左值(即可以放在赋值操作符左边的)那就必须返回引用类型。 而在函数返回自定义类型(即返回类类型)中根据是否可作为左值,返回值是否可调用成员函数的不同可分为以下四种情况。 T:返回类类型T f(原创 2009-03-23 20:46:00 · 3389 阅读 · 1 评论 -
堆栈 内存
五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一转载 2009-03-23 20:39:00 · 520 阅读 · 0 评论 -
线程间同步(代码)
1.利用互斥事件实现线程间同步#include #include DWORD WINAPI ThreadProc1(LPVOID lpParameter);DWORD WINAPI ThreadProc2(LPVOID lpParameter);int tickets=100;HANDLE g_hEvent;void main(){ DWORD Th原创 2009-03-24 08:59:00 · 446 阅读 · 0 评论 -
程序的内存分配方式
1.内存分配方式 内存分配方式有三种: [1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 [2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 [3]从堆上分配,亦转载 2009-03-23 20:06:00 · 346 阅读 · 0 评论 -
Windows下动态内存分配方式
这里的"动态内存"包含以下两个方面的内容: 1.内存。这里的"内存"指的是进程的虚拟内存空间。在Win32环境下,每一个进程拥有独立的,大小为4G(0x0000 0000 ~ 0xFFFF FFFF)的虚拟内存空间。 2.动态。这里的"动态"指的是进程虚拟内存空间中的动态内存区域。在一个进程的虚拟内存空间中,只有动态内存可以在运行是被应用程序自由的分配/使用/释放。在Win3转载 2009-03-23 22:57:00 · 528 阅读 · 0 评论 -
C++面向对象程序设计 继承与组合
1.1 类与对象对象(Object)是类(Class)的一个实例(Instance)。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。类可以将数据和函数封装在一起,其中函数表示了类的行为(或称服务)。类提供关键字public、protected 和private 用于声明哪些数据和函数是公有的、受保护的或者是私有的。这样可以达到信息隐藏原创 2009-04-04 21:36:00 · 929 阅读 · 3 评论 -
c++ 虚函数的实现机制
1、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public: virtual void f(); virtual void g();private: int a};转载 2009-08-19 15:59:00 · 242 阅读 · 0 评论 -
C++多态性:虚函数的调用原理
C++多态性:虚函数的调用原理转载 2010-07-16 14:39:00 · 455 阅读 · 0 评论