| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 爱因斯坦程序员 于 2018-10-28 08:20 编辑  
 
1.指针: 
        1.1生成指针变量 
        1.2将数组或l类的地址存入指针变量 
        1.3访问成员变量“指针->成员”         
        1.4写法:类名 *指针名//生成 
                      指针变量 = &对象名//赋值 
                      变量 = 指针->成员函数 || (*p).成员函数//访问 
2.数组: 
        2.1声明数组时要至少有一个构造函数,如果没有系统会自动生成一个基本构造函数。 
        2.2声明数组是要声明析构函数,如果没有系统会自动生成一个析构函数。 
        2.3数组初始化:数组可以在声明的时候初始化 
        2.4多次元数组:可以用数组做一个矩阵,ex)circle circle[2][3] 
3.动态内存: 
        3.1new关键词:根据变量类型从堆中分得部分内存并返回内存地址。 
        3.2delete关键词:将指针变量指向的内存返还给堆 
                3.2.1当指针指向的内存不是从堆中分配的时候会报错(即,delete语句一定要用在new语句之后) 
                3.2.2不能重复返还,已经饭还过的值再次返还会报错 
                *3.2.3在new语句里没有声明的变量返还时(delete [] 指针变量名),当变量已经在new语句中声明时(delete 指针变量名)//声明时初始化和没初始化的情况写法不一样 
        3.3当堆的内存不足时,new的返回值为NULL,可以利用这个特性用if语句判断堆是否内存不足(if (!指针变量名) return;) 
        3.4动态内存初始化:数据类型 *指针变量 = new 数据类型(初始化值) 
        3.5数组的动态内存分配与返还:数据类型 *指针变量 = new 数据类型[数组大小]; 
                                                      if (!指针变量) return; 
                                                      delete [] 指针变量; 
        3.6使用new语句获取内存时,不能在声明时初始化(int *数组指针 = new [10][20]---》报错),但是可以以以下形式初始化(int *数组指针 = new int[]{1,2,3,4.....}) 
        3.7析构函数释放声明的类对象,delete释放用new动态内存分配的对象,指针等;先delete再析构 
        3.8对象的内存分配和返还:类名 *指针变量=new 基本构造函数/构造函数; 
                                                delete 指针变量; 
        3.9对象数组的内存分配和返还:类名 *指针变量 = new 数组名[数组大小] 
                3.9.1用new语句分配内存的时候不能直接生成有参数的构造函数(类名 *指针变量 = new 数组名[数组大小] {类名(int a),类名(int b),类名(int c)};) 
4.内存泄漏:当指针变量遗失时会发生内存泄漏,堆内存有限如果一直泄露,堆可分配内存会减少。 
5.this指针: 
        5.1当对象调用成员函数的时候,系统会自动将对象的地址生成一个看不见的值返还给编译器 
        5.2需要直接写出来的情况:1.当成员变量名和参数名一致时必须要在赋值语句前加上this->(this ->radius = radius;) 
                                                2.当成员函数的作用是用来返还对象地址时可以直接return this; 
        5.3注意事项:1.只能用于类的成员函数 
                             2.只能用于静态成员变量 
6.string类: 
        6.1包含在头文件<string>中,不用生成类,有了这个头文件就直接包含了string类 
        6.2 string的构造函数:string()-->生成一个带有空字符串的string对象 
                                         string(string&str)生成一个新的复制str的对象 
                                         string(char* s)复制C-string s的字符串并生成string对象 
        6.3string str;str.append(“”)链接两个字符串。除此string头文件还包含获取长度、复制比较等  
                6.3.1复制:copy函数名(函数名) 
                6.3.2将字符转换为数字string num1 = "";int num2() = stoi(); 
                6.3.3接收输入函数getline(istream,string 名字,char); 
 
                                   |   
 
 
 
 |