上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 69 下一页
摘要: 重载相同的范围(在同一个类中)函数名相同参数不同virtual关键字可有可无重载与继承、隐藏很好区分,因为重载函数在同一个类中举例说明#include using namespace std;class Base{ public: void f(int x) {cout #include using namespace std;class base{ public: virtual void test(int a, int b) { cout #include using namespace std;class base{ public: ... 阅读全文
posted @ 2013-08-09 16:42 jihite 阅读(862) 评论(0) 推荐(0) 编辑
摘要: malloc/free是c++/c的标准库函数,new/delete 是c++的运算符。两者都可以申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free是无法满足动态对象的要求的。对象在创建时需要自动调用构造函数,在消亡时需要调用析构函数。由于malloc/free是库函数而不是运算符,不在编译器的控制权限之内,不能把自动执行构造函数和析构函数的任务强加给malloc/free。举例说明:#include #include using namespace std;class A{ public: A(void); ~A(void);}... 阅读全文
posted @ 2013-08-09 11:50 jihite 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 使用free或delete之后,只是把指针所指的内容给释放掉,但是指针并没有被干掉,还是指向原来位置(并不是执行NULL),此时指针指向的内容为垃圾,被称为“野指针”。举例说明几个重要容易迷糊的特征:1. 指针消亡了,并不表示他所指向的内存会被自动释放。例:void func(coid){ char *p = (char *)malloc(sizeof(char) * 100);}当函数执行完时,指针变量因为存在于栈上,会自动消亡。但是这不意味着分配的空间也会自动释放,原因是:动态非配的空间位于堆(动态内存分配区),必须自己去释放;否则,调用一次函数,造成一次内存泄露。2. 内存被释放了,.. 阅读全文
posted @ 2013-08-09 11:03 jihite 阅读(6409) 评论(0) 推荐(1) 编辑
摘要: 参数策略如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如下:void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); //str仍未NULL strcpy(str, "hello"); //运行错误}原因是编译器总是为每个参数制作临时副本。指针参数p, 其副本为_p,使_p=p。如果改变了_p所指的内容,相应的p所指的内容也跟着改变(毕竟指向同样... 阅读全文
posted @ 2013-08-08 21:51 jihite 阅读(7586) 评论(6) 推荐(5) 编辑
摘要: 内容复制与比较数组char a[] = "hello";char b[10];strcpy(b, a); //复制,不可以b = aif (strcmp(b, a) == 0); //比较,不可以 if (b == a)指针int len = strlen(a);char *p = (char *) malloc(sizeof(char)*(len+1)) 动态分配存储空间,不可以空穴来风,直接拷贝东西strcpy(p, a); //复制,不可以p = aif (strcmp(p, a) == 0); //比较,不可以 if (p == a) 阅读全文
posted @ 2013-08-08 20:33 jihite 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 构造函数、析构函数、赋值函数是每个类最基本的的函数。每个类只有一个析构函数和一个赋值函数。但是有很多构造函数(一个为复制构造函数,其他为普通构造函数。对于一个类A,如果不编写上述四个函数,c++编译器将自动为A产生四个默认的函数,即:A(void) //默认无参数构造函数A(const A &a) //默认复制构造函数~A(void); //默认的析构函数A & operator = (const A &a); //默认的赋值函数既然能自动生成函数,为什么还需要自定义?原因之一是“默认的复制构造函数”和"默认的赋值函数“均采用”位拷贝“而非”值拷贝“位拷贝 v 阅读全文
posted @ 2013-08-08 15:57 jihite 阅读(21886) 评论(6) 推荐(7) 编辑
摘要: const成员变量 举个例子 说明 在类中声明变量为const类型,但是不可以初始化 const常量的初始化必须在构造函数初始化列表中初始化,而不可以在构造函数函数体内初始化 但是 此时的const变量属于具体的一个对象,如何在整个类中都恒定不变呢? 答案是利用枚举,举例 枚举常量不会占据对象的存储 阅读全文
posted @ 2013-08-08 00:53 jihite 阅读(24173) 评论(6) 推荐(3) 编辑
摘要: 1. 尽可能在定义变量的同时初始化该变量(就近原则)——防止忘记初始化,引用未被初始化的变量,可能导致程序错误2. 代码行最大长度宜控制在70~80个字符以内(长行拆分)——否则眼睛看不过来,也不便于打印。例如:virtual CMatrix CMultiplyMatrix (CMatrix leftMatrix, CMatrix rightMatrix);3. 命名规则变量名字:名词 or 形容词+名词。例如:int value, oldValue;全局函数名字:动词 or 动词+名词。例如:DrawBox();类的成员函数名... 阅读全文
posted @ 2013-08-07 23:12 jihite 阅读(590) 评论(0) 推荐(0) 编辑
摘要: c++引入友元的原因在某些情况下,允许特定的非成员函数访问类的私有成员。在类中以关键字friend开始(只能出现在类定义的内部),声明为友元的可以为类、类的成员函数、普通的非成员函数。速览#include #include using namespace std;class b;class f { friend b; public: void print_a() { cout #include using namespace std;class Sales_item;class A { public: void fuc(Sales_item &)... 阅读全文
posted @ 2013-08-06 19:49 jihite 阅读(363) 评论(0) 推荐(0) 编辑
摘要: StackExchange.com上有两个贴子(贴子一,贴子二),贴子名叫“Whatisthesinglemosteffectivethingyoudidtoimproveyourprogrammingskills?”(对你的编程技术提高最有效的一件事是什么?)回复的人中给了很多很不错的建议,我把他们总结了一下,十条,相信一定会对你有用。和比自己聪明的能力比自己强的人工作。学习他们的代码,他们的做事方法,看一看那些人是怎么处理错误的。总是倾听别人怎么说,无论那个的资历和职位是什么样的。实践,实践,实践,总是不满意于一开始出来的事。多问问自己,现在在写什么代码?为什么要这样写成这样?还有没有更好 阅读全文
posted @ 2013-08-06 19:16 jihite 阅读(622) 评论(0) 推荐(0) 编辑
上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 69 下一页