面向对象程序设计总结

         C++面向对象程序设计总结

一.复合类型
1.1.指针和引用
(1) .程序中定义的变量会被分配一定的内存单元,当需要存取这个变量的值时,可以通过变量的名字访问这块内存。除了通过名字直接访问变量的内存单元,也可以使用内存地址找到存放数据的单元,间接访问其中的内容。指针可以持有对象的地址,引用则是对象的别名。
(2).指针持有一个对象的地址,称为指针“指向” 这个对象。通过指针可以间接操作它指向的对象。
获取对象地址时,使用取地址运算符“&”,通过指针间接访问对象时,使用指针解引用运算符“*”。
如:int x=100,y=20;
int pi=&x;
pi=y; //间接操作pi指向的x,即x=y;
指针值为0时表示它是一个空指针,即不指向任何对象的指针;用nullptr初始化或赋值给一个指针,会使指针成为空指针;使用头文件中定义的预处理常量NULL,它的值就是0。
(3).void
指针(通用指针)可以持有任何类型的地址值。void
只能表明相关的值是个地址,但是该地址保存的对象类型不知道。
注:(1).每个指针都有相关的类型,需要在定义指针时指出。
(2).指针不能保存非地址值,也不能被赋值或初始化为不同类型的地址值。
(3).定义指针时,应该对指针进行初始化。
(4).指针还可以进行加或减整数值的算术运算。
1.2.new和delete
(1).系统为所有程序提供了一个运行是可用的内存池,这个内存池被称为程序的自由储存区或堆(heap)。
(2).new运算符在堆上动态分配空间,创建对象,并返回对象的地址。new分三种形式:第一种形式用于分配特定类型的单个对象,并返回其地址。第二种形式可以在堆上分配指定类型和大小的数组,并返回数组首地址,但是不能对数组进行显化的初始化。第三种在指针指向的空间中创建一个指定类型的对象。程序员可以预先分配大量的内存,以后通过定位new表达式在这段内存中创建对象。
(3).new运算符分配的空间用delete运算符释放。分为两种形式:delete指针、delete[]指针。
注:delete后的ip不是空指针,而是“空悬指针”,即指向不确定的单元。
1.3.引用(右值引用)
(1).引用由类型标识符和一个取地址符(&)来定义,引用必须被初始化,初始值是一个有内存地址的对象。引用一旦初始化,就不能再绑定到其他的对象,对引用的所有操作都会被应用在它所绑定的对象上。
(2)定义形式:类型 指针变量;
定义形式:类型&引用名=初始值;
(3).指针可以不指向任何对象,其值为0,表示空指针。
1.4.右值引用
(1).可以取地址的、有名字的就是左值,不能取地址的、没有名字的就是右值。右值分为纯右值和将亡值。
(2).右值引用由类型标识符和两个取地址符(&&)来定义,右值引用必须被初始化,初始值为右值表达式,不能讲右值引用直接绑定到一个左值上。
(3).调用标准库中定义的函数std::move(),可以显式地将一个左值转换为对应的右值引用。move()函数返回给定的右值引用。
1.5.const限定指针和引用
(1).const限定词将一个对象限定为常量,const也可以限定指针和引用。
(2).const和volatile一起被称为CV限定词,volatile的使用语法和const相同。
2.1.结构体
(1).结构体把一组来自不同类型的数据组合在一起构成复合类型,其中的每个数据都是结构体的成员。语法形式:struct 结构体类型名{成员声明;};
2.2.联合
(1).程序中有时会使用一个变量来处理不同的数据类型,这种情况可以使用联合。联合由关键字union定义,也称共用体。
2.3.枚举
(1).定义:enum() 枚举类型定义了一组命名的整数常量,以提高代码的可读性。
3.1.内置数组
(1).定义:类型 数组名[数组大小]
(2).定义数组时可以对数组进行列表初始化。
(3).一个数组不能被另一个数组初始化。
(4).使用数组下标时,通常将其定义为size_t类型。size_t是一种机器相关的无符号类型,在头文件中定义,用来表示内存中任意对象的大小。
(5).一维数组a[n]的元素a[i]在内存中的地址是a+(i
n+j)。
(6).begin()函数返回指向数组第一个元素的指针,end()返回指向数组的最后一个元素的下一个位置的指针。
4.1.标准库类型string
(1).使用标准库中iostream可以读写string对象。
(2).empty()函数判断string对象是否为空。
(3).size()函数返回string对象的长度。
(4).string对象可以比较长度和字符。
(5).允许把一个string对象的值赋给另一个string对象。
(6).在头文件中定义了一组标准库函数,可以获取或者改变字符的特性。
(7).标准库类型vector表示对象的集合,其中所有对象的类型都相同,可以通过索引访问各个对象。vector是长度可变的向量,头文件为。
(8).使用下标运算符可以获取vector中指定位置的元素。vector类型对象的下标类型是vector::size type。
(9).支持迭代器的类型都有返回迭代器的成员:begin()和end()。begin()返回指向第一个元素或字符的迭代器,end()则返回指示容器或string的最后一个元素的下一个位置的迭代器。
五、函数
1.1.函数基础
(1).返回类型、函数名、参数列表和函数体构成了函数定义。
(2).函数调用形式为:函数名(实参列表)。函数定义中的参数被称为形式参数,简称形参。在调用函数时提供的数据称为实际参数,简称实参。
(3).函数在使用之前必须声明。一个函数可以在程序中多次声明。函数声明由函数返回类型、函数名和形参列表构成。如:int fact(int n);
(4).函数原型由函数名、函数返回类型和形参列表组成。
(5).直接或间接调用自己的函数称为递归函数。递归函数必须定义一个终止条件,否则会陷入无限递归调用。
2.2.参数传递
(1).C++中默认的参数传递方式是把实参的值复制到形参的储存区中,即用实参值初始化形参,这称为按值传递。
(2).当参数是引用时,函数接收的是左值而不是值的副本,即形参是实参的引用。
(3).函数的执行结果由return语句返回。return语句放在函数体内,它结束当前正在执行的函数,将控制权返回给函数的调用者。分为两种形式:return;和return表达式;
(4).返回的局部变量的引用或指针将指向不在有效的内存区域。
(5).C++的函数重载机制允许多个函数共享一个函数名,但是针对不同的参数类型提供不同的操作。如果同一个作用域内的几个函数名字相同但形参列表不同,则它们是重载函数。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值