|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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);
|
|