c++
来源:互联网 发布:布道者软件 编辑:程序博客网 时间:2024/06/05 16:31
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的目的
6. 命名空间
定义: 命名空间实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域把一些全局实体(包括变量(可初始化),常量,数,结构体,类,模板,命名空间(嵌套命名空间))分别放在各个命名空间中,从而与其他全局实体分隔开
形式:
1 namespace ns1 { 2 int a; 3 double b; //a, b仍是全局变量 4 }
7. 类和类的定义
类的public和private
c++中类的对象默认为private
8. const函數
對於累中的const函數,該函數中假如本類的成員(包括繼承得到的成員)要調用其他函數,必須調用同樣是const的函數。假如並不是本類的對象,則沒有這種限定。
9. static 成員函數與成員變量
static函數只能訪問static成員變量而不能訪問其他變量,static變量必須在類體外再定義一次(去掉static,要有類名和域作用符) 在cpp文件中,函數的定義應去掉(static, 但要有類名)。在頭文件中,函數定義則要有static和類名。
static可以不創建變量而通過類名直接調用
0 0
- c
- c
- c
- c
- C
- c
- c
- c
- C+
- c
- C
- c
- c
- c
- C
- C
- c
- C
- Xcode安装包(7.2、7.3、8.0、8.1、8.2、8.2.1)
- Leetcode Week1
- DIY个人智能家庭网关——python篇之推送门磁报警信息到手机
- unity聊天室服务器端
- 【Hadoop2.7.0、Zookeeper3.4.6、JDK1.7】搭建完全分布式的hadoop,HA部署安装,自动备援
- c++
- UVa 12096 The SetStack Computer 【STL】【stack】
- rt2860v2源码分析三
- unity客户端
- ASP.NET MVC中使用Log4Net
- Android AsyncTask使用详解
- 算法分析课每周练习 Max Points on a Line
- [LeetCode] 91. Decode Ways
- ant使用