C&C++
youoran
这个作者很懒,什么都没留下…
展开
-
C++ const引用详解
一、理解const引用与非const引用(1) 在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用。1 int ival = 1092;2 int &re = ival; //ok3 int &re2 = &ival; //错误4 int *pi = &i转载 2012-07-12 16:42:32 · 1259 阅读 · 0 评论 -
《游戏编程入门》源代码子画面销毁bug与vector容器vector::erase的问题
原书中GameEngine的代码有两处bug,源代码分别为:void GameEngine::CleanupSprites(){ // Delete and remove the sprites in the sprite vector vector::iterator siSprite; for (siSprite = m_vSprites.begin(); siSprite !=原创 2014-02-24 09:45:01 · 1379 阅读 · 2 评论 -
C++中的类所占内存空间总结
成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的是一个table,table里面记录的各个成员函数的地址(当然不同的编译可能略有不同的实现)。所以我们访问成员函数是间接获得地址的。所以这样也就转载 2013-09-04 16:25:53 · 1987 阅读 · 0 评论 -
C语言中内存分配
在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的。因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题。第1节主要介绍内存管理基本概念,重点介绍C程序中内存的分配,以及C语言编译后的可执行程序的存储结构和运行结构,同时还介绍了堆空间和栈空间的用途及区别。第2节主要介绍C语言中内存分配及释放函数、函数的功能,以及如何调用这些函数申请转载 2013-09-03 15:50:28 · 134014 阅读 · 22 评论 -
C++中的srand(time(null))利用时间设置随机种子产生随机数
首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。 伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪转载 2013-09-02 22:31:18 · 27281 阅读 · 0 评论 -
c++读取文件--结束条件的判断
在使用C/C++读文件的时候,一定都使用过eof()这个函数来判断文件是否为空或者是否读到文件结尾了,也会在使用这个函数的过程中遇到一些问题,如不能准确的判断是否为空或者是否到了文件尾,以至于有些人可能还会怀疑这个函数是不是本身在设计上就有问题。先来看看如下这段代码:#include stream>#include fstream>usingnamespace std;int转载 2013-05-03 20:55:42 · 10463 阅读 · 1 评论 -
标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的str转载 2013-04-24 20:19:19 · 709 阅读 · 0 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyprint?int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp]转载 2013-01-21 12:17:39 · 853 阅读 · 0 评论 -
const 修饰函数参数,返回值,函数体
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书转载 2013-01-18 15:52:03 · 15258 阅读 · 1 评论 -
sizeof例子
sizeof()功能:计算数据空间的字节数1.与strlen()比较strlen()计算字符数组的字符数,以"/0"为结束判断,不计算为'/0'的数组元素。而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。注意:int *p; siz转载 2013-01-13 09:09:14 · 1012 阅读 · 0 评论 -
名字的作用域(scope)
C++程序中,每个名字都与唯一的实体(比如变量、函数和类型等)相关联。尽管有这样的要求,还是可以在程序中多次使用同一个名字,只要它用在不同的上下文中,且通过这些上下文可以区分该名字的不同意义。用来区分名字的不同意义的上下文称为作用域(scope )。作用域是程序的一段区域。一个名称可以和不同作用域中的不同实体相关联。 C++语言中,大多数作用域是用花括号{ }来界定的。一般来说,名字从其转载 2012-10-14 14:52:46 · 977 阅读 · 0 评论 -
const的位置与区别
一个比较经典的问题——问以下两种声明的区别:1) const char * p2) char * const p 这里的 const 关键字是用于修饰常量,书上说 const 将修饰离它最近的对象,所以,以上两种声明的意思分别应该是:1) p 是一个指向常量字符的指针,不变的是 char 的值,即该字符的值在定义时初始化后就不能再改变。2) p 是一个指向字符的常量指针转载 2012-07-30 09:20:34 · 8307 阅读 · 0 评论 -
【转】C++函数——指针和引用类型的参数传递
普通的函数形参:void fun(int v1,int v2){ cout<<v1<<"\t"<<v2<<endl;}这就是一个最基本的带有两个普通形参的void型函数,在函数的()中定义的两个变量就是函数的形参。在调用函数时,编译器用实参对形参初始化并运行程序,需要指出的是形参只是实参的副本,这一过程中形参的可以重新赋值,而实参的值不会相应发生变化,可以举个例子:转载 2012-10-12 16:03:15 · 4352 阅读 · 3 评论 -
Const,Const函数,Const变量,函数后面的Const
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书转载 2012-07-30 09:37:36 · 1041 阅读 · 0 评论 -
关于默认构造函数的几个错误认识
下载了某大师的VC++视频资料。在讲到C++时,说是如果程序员没有自己定义默认构造函数,那么编译器会自动为我们产生一个默认的构造函数。 本来这个错误的认识很多程序员都有,不足为奇。但有这么多年编程经验的高手也有这样的错误认识就不禁让我哑然了。 其实编程语言和我们所用的任何软件没有区别,例如Photoshop、AutoCAD之类。其唯一不同的是我们用的编程语言是基于编译器的,而转载 2012-08-06 09:27:15 · 901 阅读 · 0 评论 -
在字符串中找出连续最长的数字串
题目描述请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!样例输入abcd12345ed125ss123058789原创 2014-06-25 20:48:46 · 19732 阅读 · 0 评论