鱼C论坛

 找回密码
 立即注册
查看: 2300|回复: 0

[学习笔记] C++第二课

[复制链接]
发表于 2018-10-27 10:49:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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);

                                 

4-1

4-1

4-2

4-2

4-5

4-5

4-6

4-6

6.3.3

6.3.3

趣味

趣味

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 14:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表