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
原创粉丝点击