
C++
ZHANGJIETING
这个作者很懒,什么都没留下…
展开
-
运算符重载在vc6.0中的bug
运算符重载在vc6.0中存在bug。以下两段代码实现的功能相同,写法和相应的头文件却不同。 代码1:#include //必须用这个,否则编译通不过//using namespace std;class complex{private: int real,imag;public: complex(int a=0,int b=0) {原创 2009-09-23 21:23:00 · 1047 阅读 · 0 评论 -
C++ 中的 protected(转)
http://blog.codingnow.com/2010/03/cpp_protected.html转载 2010-10-20 14:23:00 · 643 阅读 · 0 评论 -
用引用返回值(好文)
<br />http://blog.youkuaiyun.com/tcdddd/archive/2010/04/23/5519332.aspx转载 2010-10-19 10:26:00 · 694 阅读 · 0 评论 -
对于拷贝构造函数中参数是引用的理解
<br />1、如果用传值的方法的话,因为形参需要拷贝一份实参,内存占用的空间大了;<br />2、如果使用指针,不是很安全;<br />3、所以,使用引用的话,它能达到指针的功能,因为是别名,可以直接使用内存中的实参,但是还不用重新复制一份。原创 2010-10-14 11:08:00 · 783 阅读 · 0 评论 -
拷贝构造函数使用const的原因
<br />拷贝构造函数之所以使用const,使为了防止在复制对象的时候,拷贝构造函数内部万一写错了,改变了原来的对象。使用const关键字,就保证了原对象不改变。原创 2010-10-14 10:09:00 · 1659 阅读 · 0 评论 -
使用拷贝构造函数与使用重载的“=”重载函数的区别
<br />拷贝构造函数是将一个对象的内容完全复制给另一个对象;而使用重载=的话,很可能类中有指针,这样的话,只能将栈中的内容复制过去,堆中的内容不能复制过去,这样的话,对象之间有联系,删除一个对象会出现问题。<br /> <br /> <br />在C++中,下面三种对象需要拷贝的情况。因此,拷贝构造函数将会被调用。 <br />1). 一个对象以值传递的方式传入函数体 <br />2). 一个对象以值传递的方式从函数返回 <br />3). 一个对象需要通过另外一个对象进行初始化 <b原创 2010-10-14 09:51:00 · 1215 阅读 · 0 评论 -
对const关键字的理解
<br />1、const int Max = 10;<br />定义const常量,比宏定义好的地方就是可以进行类型检查。<br /> <br />2、void fun(cont int i) //只能使用i,不能修改i的值。<br />对于const作为函数参数的情况,如果函数体中修改了i的值,就报错了。如下所示:<br />void fun(const int i){ i = 10;}<br /> <br />3、为函数重载提供了参考:<br />class A原创 2010-10-14 10:05:00 · 688 阅读 · 0 评论 -
C++语言特性中的性能分析
<br />转自http://book.51cto.com/art/201006/203560.htm<br />这是一本关于C++性能优化的书,比较不错,叫《C++应用程序性能优化》(第2版)<br /> <br />C++语言特性中的性能分析<br />大多数开发人员通常都有这个观点,即汇编语言和C语言适合用来编写对性能要求非常高的程序。而C++语言的主要应用范围是编写复杂度非常高,但是对性能要求不是那么严格的程序。因为在大多数人看来,C++语言相对前面两种语言来说,设计时因为考虑到要支持多种编程模转载 2010-10-13 09:45:00 · 791 阅读 · 0 评论 -
sizeof问题
<br />#include <iostream>int main(int argc, char *argv[]){ char str[] = "game"; std::cout<<sizeof(str)<<":"; char *p = str; std::cout<<sizeof(p)<<":"; char i = 10; std::cout<<sizeof(i)<<":"; void *pp = malloc(10); std::cout<<sizeof(pp原创 2010-10-12 23:27:00 · 551 阅读 · 0 评论 -
常量指针与指针常量
我只见过int const * m, const int * n和int * const p的区别,那里前两者是等价的,表示m、n是指向i的指针,*m,*n是不能改变的,但是m,n本身都可以改变;第三个是说p指向的东西不能变,也就是p不能变了。原创 2010-10-12 09:06:00 · 758 阅读 · 0 评论 -
什么是多态?为什么用多态?有什么好处?
<br />http://hi.baidu.com/python811022/blog/item/613a7b8d4369b116b31bba39.html<br /> <br />,多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是我们在以后的工作中经常回用到的<br /><br />首先,有这样一个系统:有个学生工作从达内毕业了,作的还不错.买了辆捷达汽车.这个系统应该如何设计呢?<br />按照OO的思想,我们会抽象出来一个类,表示捷达汽车,其中有个run()方法<br转载 2010-10-12 11:12:00 · 1149 阅读 · 0 评论 -
静态成员函数
静态成员函数是类的成员函数,该函数不属于该类申请的任何一个对象,而是所有该类成员共同共有的一个函数。 举个例子给你,你们班里面有10个人(10个比如高一一班的对象),体育老师分给你们一个篮球(静态成员函数),你们每个人都带了一个篮球(非静态成员函数),你们都很小气,自己的球只能自己拍,要是5对5打比赛,那就只能用那个静态的篮球了(每个人都可以拿来用,但是带来的影响是对全体的)。因此,我可以说那个篮球是高一一班的成员。所以也就是说:静态成员函数是类的成员函数(因为高一二班就不能拿来玩),但是这转载 2010-10-09 16:59:00 · 13509 阅读 · 3 评论 -
定义时就必须初始化的地方(总结)
1、C++中的引用:int someInt = 10;int &refA = someInt;如果不希望通过引用来改变相关变量的值,还可以定义常引用:const int &const_refA = someInt;2、用const定义的常变量:const int a = 1;原创 2010-06-04 14:56:00 · 940 阅读 · 0 评论 -
delete和delete[] 的区别?(转)
C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 楼主的这个问题提得很好。很多人注意到了这个问题,但是却不清楚为什么要这样做,不这样做行不行。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 对于 (1),上面提供的程序已经证明了 delete[] 和 delete 是等同的。但是对于 (2),情况就发生了变化。请看下原创 2010-06-06 15:23:00 · 630 阅读 · 0 评论 -
有趣的运算符重载知识点
#include //using namespace std;class complex{protected: int real,imag;public: complex(int a=0, int b=0) { real = a; imag = b; } void display() { cout } friend complex operator+(complex& a, comple原创 2009-10-16 20:43:00 · 586 阅读 · 0 评论 -
构造函数参数是引用类型原因
拷贝构造函数之所以引用,是因为如果传值的话会有一层隐式的拷贝。拷贝构造函数参数是不能传值的,只能传引用。可以这样理解:1.传引用效率高 2.当一个类的对象作为参数时,会调用拷贝构造函数。此时正是在定义拷贝构造函数本身,如果其参数是对象而不是对象的引用,那么拷贝构造函数就是调用它本身,而它本身却还没有定义。对象作为函数参数时,会自动调用拷贝构造函数。假如对象作为拷贝构造函数的参数时,也要原创 2009-09-23 22:16:00 · 1154 阅读 · 0 评论 -
构造函数为什么不能是虚的,而析构函数为什么某些情况下必须是虚的
构造函数不能是虚函数,而析构函数在某些情况下必须为虚函数(比如你想让你类能够被继承,那么这个类的析构函数最好是虚的,<br />继承一个析构函数不是虚的类是有风险的),值得补充的是,当基类的函数是虚函数,子类的重载的函数也是虚的,及时不加virtual<br />关键字也是虚的。转载 2010-10-20 14:26:00 · 682 阅读 · 0 评论