首页 > 编程 > C++ > 正文

c++

2019-11-06 09:27:36
字体:
来源:转载
供稿:网友

1. 构造函数

定义类时要初始化构造函数的参数的值 例:

Complex.hpp

class Complex { public: Complex(double real = 0, double imaginary = 0); Complex add(const Complex &right); Complex subtract(const Complex &right); void PRintComplex(); void setComplexNumber(double rp, double ip); private: double realPart; double imaginaryPart;};

Complex.cpp(部分)

Complex::Complex(double real, double imaginary) { setComplexNumber(real, imaginary);}

2. 野指针(来自百度)

野指针指向一个已删除对象或未申请访问受限内存区域的指针,与空指针不同,野指针无法通过简单地判断是否为NULL来避免,只能通过养成良好的编程习惯来尽力减少

成因
指针变量未初始化指针释放后为置空指针操作超越变量作用域

3. 指向结构的指针

struct guy * him him -> income == (*him).income //一定要加括号,因为.运算符比*运算符的优先级高

4. 已放弃(核心已转储)

该错误至今出现两次:

定义的数组容量过小导致越界有返回值的函数忘记写return

5. 代码过程的一些思考

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "date.h" 4 int DaysInMonth(int, int); 5 Date* CreateDate(int year, int month, int day) { 6 Date *a; // 1.选择指针与malloc 而不直接创建Date局部变量的原因 7 a = (Date *) malloc(sizeof(Date)); 8 a->year = year; 9 a->month = month; 10 a->day = day; 11 return a; 12 } 13 14 void DestroyDate(Date** p) { 15 free(*p); 16 *p = NULL; 17 } 18 19 Date* CopyDate(const Date* date) { 20 Date *a; //2.为什么不直接return date 的原因 21 a = (Date *) malloc(sizeof(Date)); 22 *a = *date; 23 return a; 24 } 25

答: 1. 假如直接创建Date局部变量,退出函数时会被销毁,而malloc分配的内存除非自己free,否则不会被销毁,而且通过返回指针可以找到这段内存 2. 假如直接return date,就是表示多了一个指针指向同一段内存,并不能达到copy的目的


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选