C++学习
苍风
这个作者很懒,什么都没留下…
展开
-
调用模板类出现 undefined reference 错误的解决方法
g++不支持模板类的分离编译,因此模板的实现最好都些在.h文件中,否则将出现undefined reference to XXXX 的错误。下面是一个出错的例子,解决方法就是将stack.cc中的代码移到stack.h中。010203 #ifndef __MY_STACK__04 #define __MY_STACK__0506 #include 07 #inc转载 2014-02-20 20:24:40 · 6042 阅读 · 0 评论 -
13章 运算符重载
1、[转帖]C++ operator关键字(重载操作符) operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。原创 2014-02-20 13:51:39 · 428 阅读 · 0 评论 -
15章 模板
1、如果不确定当前函数的形参类型,需要写一个通用的函数,就用到了模板方法,使用格式:template名称 函数(名称 a,名称 b){}原创 2014-02-20 17:04:29 · 348 阅读 · 0 评论 -
出现乱码的原因
首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码。而问题一般都出在很多用户对自己当前的编码没太多概念,于是一个简转载 2014-03-06 15:47:27 · 431 阅读 · 0 评论 -
C++的一些作用域问题
1、如果一个局部变量和一个全局变量同名,如何在局部中访问全局变量答:使用访问操作::来访问。2、一个全局变量在file1中被定义,在file2中使用,如何在file2中声明答:使用extern在file2中声明。3、file1中和file2中都用同样的名称定义了一个全局变量,但是这两个变量代表不同的实体,如何不改变名称而通过编译答:使用static在两个文件中声明这个变量。原创 2014-03-13 19:49:41 · 421 阅读 · 0 评论 -
C++创建类必备的三个函数以及使用new所需要做的事
1、构造函数。原创 2014-04-13 22:09:33 · 1074 阅读 · 0 评论 -
C++中输入输出函数
1、getline函数getline()函数会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。原创 2014-05-04 16:36:26 · 561 阅读 · 0 评论 -
C++程序错误防止语句之assert函数
--------------------------------------------------------------- ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导转载 2014-04-06 21:02:11 · 726 阅读 · 0 评论 -
fill和memset的区别
fill是按内存单元填充的,例如:fill(a , a+100 , 1)如果是整形数组类型,就将每一个字填充为1,如果是字符型数组,就将每一个字节填充为1而memset是按字节进行填充的,无论是整形还是字符数组都是按字节进行填充,所以memset(a , 1 , sizeof(int)),填充的结果a的值就是16843009,因为int是四个字节,每个字节为1时换成10进制就是上面的结果原创 2014-03-24 22:18:35 · 416 阅读 · 0 评论 -
C++的一些关键字
1、extern:只声明不定义原创 2014-06-11 16:12:38 · 326 阅读 · 0 评论 -
面向对象设计原则
1、开放-封闭转载 2014-07-01 22:21:16 · 315 阅读 · 0 评论 -
a和&a的区别
a为数组时,a为数组首地址,即相当于a[0],而&a则是以整个数组取地址,&a+1即是取a数组完结后的下一个字节地地址,同样*p指向&a时,*(p+1)也是指向数组完结后的下一个字节,若cout原创 2014-03-27 13:10:37 · 541 阅读 · 0 评论 -
内存动态分配注意点
1、如果动态创建const对象原创 2014-06-11 21:03:36 · 377 阅读 · 0 评论 -
C++函数调用步骤
1、首先确定进行函数调用的对象、引用或指针的静态类型转载 2014-06-19 22:39:37 · 911 阅读 · 0 评论 -
14章 异常处理
1、try块和catch块,try块包含在正常情况下应执行的代码,catch块包含出现异常时执行的代码,例:try{if (number2 == 0)//分母为零,出现异常throw number1;//抛出异常cout}catch(int e)//此处形参对应的是抛出的number1{cout}原创 2014-02-20 14:32:23 · 416 阅读 · 0 评论 -
指针和引用有什么区别
1.从内存上来讲 系统为指针分寸内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间。2指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初始化以后不允许再重新绑定对象。3.所以引用访问对象是直接访问。指针访问对象是间接访问。4。如果pa是指针,那么*pa就是引用了。但是两者在作为形参的时候非常相似,区别是指针拷贝副本,引用不拷贝转载 2014-02-19 14:36:03 · 379 阅读 · 0 评论 -
16章 链表、栈和队列
1、选择链表或数组的判断方法:如果预先不知道元素数目或者需要频繁的对数组中任意位置插入和删除元素,使用链表的效率更高。反之则用数组原创 2014-02-21 11:06:17 · 393 阅读 · 0 评论 -
17章 树、堆和优先队列
1、二叉搜索树:其左子树的任意节点值都小于此节点值,右子树的任意节点值都大于此节点值描述二叉树类似于链表:template class TreeNode{public:T element;TreeNode *left;TreeNode *right;TreeNode(){ left = NULL; right = NULL;}TreeNode(T ele原创 2014-02-21 14:33:23 · 328 阅读 · 0 评论 -
迭代器介绍
Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。由于Iterator模式的以上特性:与聚合对象耦合转载 2014-02-22 22:00:52 · 451 阅读 · 0 评论 -
虚函数
虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。下面是对C++的虚函数这玩意儿的理解。一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始)简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形转载 2014-02-23 20:43:33 · 332 阅读 · 0 评论 -
关键字const有什么含义?
我只要一听到被面试者说:"const意味着常数"(不是常数,可以是变量,只是你不能修改它),我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可转载 2014-02-26 10:55:28 · 599 阅读 · 0 评论 -
Static的作用
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想转载 2014-02-26 20:06:55 · 426 阅读 · 0 评论 -
单件模式
单件模式是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享时的程序设计方法(根据实际情况,可能需要几个类实例)Singleton模式的实现基于两个要点:1)不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance。Public保证了它的全局可见性,静态方法保证了不会创建出多余的实例。2)转载 2014-02-26 23:14:10 · 388 阅读 · 0 评论 -
第二章 定义命名常量格式
const datatype CONSTANTNAME = VALUE;原创 2014-02-14 22:11:32 · 594 阅读 · 0 评论 -
第六章 数组
1、C++允许用一个字符串初始化字符数组,例:char city[] = "hongkong";原创 2014-02-16 20:38:22 · 293 阅读 · 0 评论 -
内存泄漏的定义以及为什么会内存泄漏,如何防止内存泄漏
内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。所以“内存泄漏”是从操作系统的角度来看的。这里原创 2014-02-27 21:57:08 · 1796 阅读 · 0 评论 -
第九章 对象和类
1、通过指针访问对象成员:声明对象名,如circle后,Circle *p = &circle即声明了一个对象指针p,并将circle的地址赋予p。若需引用circle中的成员时,格式为p->XX。原创 2014-02-17 21:13:57 · 596 阅读 · 0 评论 -
第七章 指针和C字符串
1、对指针赋值,必须使用相同的类型变量地址。例:int m;int *p = &m;原创 2014-02-17 13:43:05 · 442 阅读 · 0 评论 -
第五章 函数
1、函数调用过程:当函数被调用时,系统将其参数和变量保存在内存的一个区域,此区域是栈结构。当一个函数调用另一个函数时,调用的栈空间将被完好无缺的保留,系统分配新的空间来处理新的函数调用。当一个函数完成工作后,返回其调用者,关联的栈空间被释放。原创 2014-02-15 20:17:50 · 425 阅读 · 0 评论 -
为什么基类的析构函数必须为虚函数的原因-个人理解
假如一个基类类型的指针指向了一个派生类的对象,如果需要原创 2014-06-19 22:01:26 · 561 阅读 · 0 评论