C++近期学习情况与知识点总结

本文总结了C++近期学习的重点内容,包括引用、new和delete运算符、标准库string和vector类型、文件读写等。强调了预习和复习的重要性,并详细介绍了指针、引用、结构体、数组、字符串流等概念。

C++近期学习情况总结
新学期开始,我们开始学习《C++面向对象程序设计》一书。光看名字,我就能感觉到本学期的C++一定是一场难打的仗。因为C++可以说是包含了C语言的大部分语法,而且比C语言更富技巧性,其难度自然更上一层楼。但是C++等编程语言是我的饭碗课,即使是再难啃的骨头也应该硬着头皮上,畏难心理更是要不得。从另一方面讲,即使C++有难度,也不可能一点也学不会。要找到方法,勤看书,善总结,持之以恒,寻找突破口。既然是要成为程序猿的人,怎能怕这一点小困难?再难啃的骨头也要啃,崩了门牙就再镶一个,我相信只要坚持学下去,一定会找到其中的乐趣,离梦想就又近了一步。
随着学习进度的慢慢加快,加之C++学习内容的逐渐深入,课前的预习显得十分重要。预习之后,对本节课要学的内容有了一些了解,听课的时候就不太费劲,还可以专门针对预习时发现的问题展开学习。另外,课后的复习也十分有用!因为经过了预习和听讲,复习就是把新的知识点消化、沉淀的重要过程。
目前学到的C++内容大部分是基础概念,它们就好像是基石。只有在心中明了这是什么东西、是怎样的形成的,而它们又该怎么使用,才能为后来写的代码的牢固性打下坚实的基础。

- C++近期知识点总结
近期主要学到了C++新增加的引用、new和delete运算符、标准库string和vector类型、文件读写、函数传值等。下面我整理了一些书上的知识点:

1. 指针类型的定义与使用
类型 *指针变量
需要注意的是,指针本身也是对象,指向一个对象的指针有两个存储单元与之相关:一个是指向自己的存储单元,里面存储着所指对象的地址;另一个是指针指向的对象的存储单元,里面存放该对象的值。

如果设*pi=&ival,那么pi与&ival的值是相同的,即指针中存放的内容;*pi与ival的值是相同的;&pi是pi指针在内存中的地址。
指针不能保存非地址值,也不能被赋值或被初始化为不同类型的地址值。
*需要万分注意的是,不可设了指针之后没有对应的值,即设了指针之后立即关联,可以设成空指针。

2. new和delete运算符
new:
new 类型 或者 new 类型(初始值)
分配特定类型的单个对象,并返回其地址;
new 类型[数组大小]
分配多个连续存储的对象;
new (指针)类型
定位new,必须包含标准库头文件;
delete:
delete 指针
释放new分配的单个对象的delete形式;
delete[]指针
释放new分配的数组的delete形式;
定位new没有对应的delete表达式。
3. 左值引用和右值引用的含义和定义语法
左值引用:
类型 &引用变量 = 初始值;
引用必须被初始化,初始值是一个有内存地址的对象,如变量。
引用一旦初始化,就不能再绑定到其他对象。
引用不能与字面值或某个表达式的计算结果绑定在一起,且被实现为与所指对象占据同一地址空间。
引用与指针的不同:
1)定义和初始化。
2)使用方式:指针通过解引用(*)运算间接访问指定对象;引用通过作为对象的别名,直接访问对象。
3)指针可以不指向任何对象,引用必须绑定到一个对象,而且一直绑定该对象。
4)指针之间的相互赋值会改变指向关系;引用之间的相互赋值是它们绑定的对象间的赋值,引用关系不改变。
右值引用:
类型 &&右值引用变量 = 右值表达式;
右值引用必须被初始化为右值表达式。

4. const限定指针与引用的含义和用法
1)指向常量的指针
注意:C++不允许将const地址赋给非const指针;而允许将一个非const地址赋给const指针。
若pi是一个指向常量的指针,pi本身的值可以改变,指向另一个同种类型的常量。
2)指向非const对象的const指针
指针值不能再改变,但是它所指向的单元值可以改变。
3)指向const对象的const指针
4)const限定引用
不能用来修改它所绑定的对象。
注意:const引用可以绑定到非const对象,也可以用任意表达式初始化const引用,只要表达式的结果能转换为引用的类型即可。
5)volatile限定词

5. 结构体、联合、枚举等内置复合类型
结构体:
由关键字struct定义。
struct 结构体类型名{
成员声明;
};
联合:
由关键字union定义,也称共用体。
枚举:
定义了一组命名的整数常量。

6. 数组的特点、定义和使用语法
类型 数组名[数组大小];
数组名字代表数组第一个元素的地址。
二维数组a[m][n]的元素a[i][j]在内容中的地址是a+(i*n+j)。
在头文件定义的库函数end(数组名)返回指向数组第一个元素的指针;begin(数组名)返回指向数组最后一个元素的下一个位置的指针。

7. C风格字符串的特点和用法
使用string类型要包含头文件
使用标准库中iostream可以读写string对象。
相对用char定义的二位字符数组,string非常方便实用。

8. 标准类型vector的特点和用法
vector<元素类型> 变量名;
向vector中添加元素: push_back();
用pop_back()删除vector对象末尾的元素。
vector类型对象的下表类型是vector::size_type。

9. 迭代器的概念和用法
指向对象是容器中的元素或string中的字符,只有在指向某个元素或容器最后一个元素的下一个位置时才是有效的。

10. 文件流和文件读写操作
标准库文件流:
ifstream类:用来输入的文件流。
ofstream类:用来输出的文件流。
fstream类:把文件连接到流对象用来输入和输出。
使用文件流要包含头文件

11. 字符串流和内存读写操作
istringstream:从string对象中读取数据。
ostringstream:向string对象写入格式化的内容。
stringstream:从字符串中读取数据,将数据写入字符串。
使用字符串流要包含标准库头文件

12.函数
定义: 返回类型 函数名(参数列表){函数体}
调用: 函数名(实参列表);(此时不加类型)。
注意:实参const int类型,不能转换为int类型;但是实参int类型,可转换为形参const int类型。
参数传递:
1)按值传递:
用实参值初始化形参。
函数调用会使程序的控制权传递给被调用函数,而当前活动函数的执行被挂起。当被调用函数执行完成时,主函数从调用语句之后的语句恢复执行。
但是,按值传递实参时,函数不会访问当前调用的实参,在函数中处理的只是实参的副本。它们在运行栈中储存,改变这些值不会影响实参。如果必须修改实参的值时,按值传递无法做到。
2)按地址传递:
此时传递的是地址值,本质上仍是值传递。
可以做到同时改变实参和形参,但是并不是十分安全。
3)按引用传递:
对变量的改变影响绑定变量。当参数是引用时,函数接收的是实参的左值而不是值的副本,即形参是实参的引用,可以改变实参的值。

13.函数重载
同一个作用域内的几个函数名字相同但是形参列表不同——参数个数不同,或者参数类型不同。
定义一组函数,对不同类型的数据执行同样的一般性动作。

14.作用域和存储类别
局部作用域:包含在函数定义中。
全局作用域:不包含在任何函数或块中的作用域,整个程序只有一个全局作用域。
1)全局对象:在全局作用域中定义的函数和变量,在整个程序的执行过程中都存在,可以在整个程序中使用。
在其中定义的内置类型变量,如果没有指定初始值,会被初始化为0。
关键字extern用来声明全局对象。
2)局部对象:在函数内可以声明和定义局部对象,局部对象的作用域从其声明点开始到函数结束处为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值