04737⾃考C++程序设计知识点总结、考点串讲、考前复习
04737⾃考C++程序设计知识点总结
引⾔
⾃学考试【04737】C++程序设计这门课程,主要分为两个阶段,⼀个是基础阶段,⼀个是进阶阶段。
第1~5章为基础阶段,主要讲述C++程序设计基础,与C语⾔的区别,完全看完后,能阅读简单的C++程序编程。
第6~9章为进阶阶段,主要对C++程序设计进⾏深⼊学习,学习掌握后,能做到阅读⼤部分C++程序编程。
仅仅是想考过⾃学考试,在记下本⽂知识考点,辅以课本课后习题+往年真题,基本能考过本科⽬。
若想进⼀步从事程序编程⾏业,仅仅通过做题还是不够的,需要⼤量阅读学习前辈编程实例,多些C++应⽤编程实例进⾏练习。
第⼀章认识C++的对象
(2020/10/21更新)
1.1 初识C++的函数和对象
C语⾔的结构变量,在C++中则称为结构对象
1.混合型语⾔
C++程序以.cpp作为⽂件扩展名,有且只有⼀个主函数main()。C++保留了这个⾯向过程的主函数,所以称之为混合型语⾔。
2.注释⽅式
/* 多⾏注释 */ 和 // 单⾏注释
3.输⼊和输出
Iostream.h 是I/O流的标准头⽂件。
C++预定义了4个流:cin、cout、cerr和clog。这4个流与4个具体的输⼊输出设备相联接,具体的联接设备如下:
(1)cin与标准输⼊设备相联接;
(2)cout与标准输出设备相联接;
(3)cerr与标准错误输出设备相联接(⾮缓冲);
(4)clog与标准错误输出设备相联接(缓冲)。
在默认情况下,操作系统指定标准输出设备式显⽰终端,标准输⼊设备式键盘。⽽标准错误输出设备则总是显⽰终端。当然,可以将标准输⼊输出设备重定向为其他设备,⽐如⽂件等。
4.使⽤命名空间
using namespace std; //使⽤命名空间
5.对象的定义和初始化
Int z(0); 等价于int z=0;
6.函数原型及其返回值
函数有库函数和⾃定义函数。使⽤变量规则:必须先声明,后使⽤,函数也是。
使⽤const修饰的标识符定义是⼀类特殊的常量,称为符号常量,或const变量。
1.2 认识C++语⾔⾯向过程编程的特点
1.函数重载
同⼀函数定义⼏个版本,从⽽使⼀个函数名具有多种功能。
2.数据类型
(1)void,C++增加的数据类型,⽆类型标识符,只能声明函数的返回值类型,不能声明变量。
(2)整数常量有4种类型:⼗进制常量、长整形常量、⼋进制常量和⼗六进制常量。
3.动态分配内存
new 类型名[size]
指针名 = new 结构名;//分配
delete 指针名; //释放
4.引⽤
引⽤实际就是变量的别名。
数据类型&别名=对象名;
如: int x = 9; int &a = x;
5.对指针使⽤const限定符
指向常量的指针:const int *p;
常量指针:int * const p = &x;
指向常量的常量指针:const int * const p = &x;
6.数据的简单输⼊与输出
两种格式控制⽅式:iso_base 类提供的接⼝;操控符的特殊函数。
表1-1 操控符及其含义
名称含义作⽤
dec设置转换基数为⼗进制输⼊/输出
oct设置转换基数为⼋进制输⼊/输出
hex设置转换基数为⼗六进制输⼊/输出
endl输出⼀个换⾏符并刷新流输⼊/输出resetiosflags(long flag)清楚flag指定的标志位输出
setiosflags(long flag)设置flag指定的标志位输出setfill(char ch)设置ch为填充字符输出
setprecision(int n)设置浮点数输出精度n输出
setw(int width)设置输出数据字段宽度width输出
表1-2 常量及其含义
常量名含义
ios_base::left输出数据按输出域左边对齐输出
ios_base::right输出数据按输出域右边对齐输出
ios_base::showpoint浮点输出时必须带有⼀个⼩数点
ios_base::showpos在正数前添加⼀个“+”号
ios_base::scientific使⽤科学计数法表⽰浮点数
ios_base::fixed使⽤定点形式表⽰浮点数
1.3 程序的编辑、编译和运⾏的基本概念
源⽂件中含有包含头⽂件的预编译语句,经过预编译后,产⽣翻译单元,以临时⽂件的形式存放于计算机之中。之后进⾏编译,进⾏语法检查,产⽣⽬标⽂件(*.obj)。此⼯程的所有⽬标⽂件经过连接,产⽣可执⾏⽂件。连接包含C++的库函数和标准类库的连接。
第⼆章从结构到类的演变
(2020/10/21更新)
2.1 结构的演化
1.结构发⽣质的演变
(1)函数于数据共存
struct 结构名
{数据成员
成员函数
};
访问成员⽅法:结构对象.成员函数
默认访问权限是public类型
(2)封装性
将数据成员使⽤private关键字定义,则产⽣封装性。
2.使⽤构造函数初始化的对象
3.构造函数名对象名(初始化参数)
2.2 从结构演变⼀个简单的类
关键字class代替struct,就是⼀个标准的类。
2.3 ⾯向过程与⾯向对象
⾯向过程,不必了解计算机内部逻辑,精⼒集中在算法逻辑和过程。
⾯向对象设计,进⾏功能和数据抽象,对象是功能和数据抽象的统⼀。
2.4 C++⾯向对象程序设计的特点
1.对象
C++使⽤对象名、属性和操作三要素来描述对象。
2.抽象和类
类是具有相同的属性和操作的⼀组对象集合,其内部包含属性和操作两个主要部分。类的作⽤是定义对象。
类给出了属于该类的全部对象的抽象定义,⽽对象则是符合这种定义的实体。所以将对象称作类的⼀个实例。
3.封装
将类封装起来,也是为了保护类的安全。所谓安全,就是限制使⽤类的属性和操作。
在类中,封装是通过存取实现的,对象的外部只能访问对象的公有部分,不能直接访问对象的私有部分。
4.继承
继承是⼀个类可以获得另⼀个类的特性的机制,继承⽀持层次概念。
5.多态性
不同的对象可以调⽤相同名称的函数,但可导致完全不同的⾏为的现象称为多态性。
2.5 使⽤类和对象
1.使⽤string对象,必须包含这个类的头⽂件string.h,即#include<string.h>或#include using namespace std;对象使⽤⾃⼰成员函数的⽅法是:
对象名.成员函数
常⽤的函数如下:
size():计算并输出字符串长度。
substr():⽤来返回字符串的⼦串。
find():⽤来在主串中检索所需字符串,到返回所在位置,不到返回-1。
2.使⽤complex类定义复数对象,需包含头⽂件:
#include
complex <;数据类型>对象名(实部值,虚部值);
complex 的real 和image成员函数⽤来输出对象的实部和虚部的值。
2.6 string对象数组与泛型算法
string 类有⼀对⽤来指⽰其元素位置的基本成员函数:指⽰第⼀个元素的begin和指⽰最后⼀个元素之后的字符串结束标记end。
第三章函数与函数模板
(2020/10/22更新)
3.1 函数的参数及其传递⽅式
函数参数有两种传递⽅式:传值和传引⽤。传引⽤其实就是传对象的地址,所以也称传地址⽅式。
1.对象作为函数参数
将对象作为函数参数,是将实参对象的值传递给形参对象,这种传递是单向的。形参拥有实参的备份,当在函数中改变形参是,改变的是这个备份中的值,不会影响原来实参的值。
2.对象指针作为函数参数
将指向对象的指针作为函数参数,形参是对象指针(指针可以指向对象的指针)实参是对象的地址值。
虽然参数传递⽅式仍然是传值⽅式,但因为形参传递的就是实参本⾝,所以当在函数中改变形参的值时,改变的就是原来实参的值。
#include <iostream.h>
#include <conio.h>
void swap(int *a , int *b ); //函数原型声明
void main()
{
int x=3;
int y=4;
cout<<"Before swap"<<"x="<<x<<"y="<<y<<endl;
swap(&x,&y);
cout<<"After swap"<<"x="<<x<<"y="<<y<<endl;
getch();
}
void swap(int *a , int *b )
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
运⾏结果:
Before swap x=3 y=4
After swap x=4 y=3
3.引⽤作为函数参数
形参是对象的引⽤,实参是对象,实参和形参对象代表⼀个对象,所以改变形参对象的值就是改变实参的值。
4.默认参数
默认参数是在函数原型中说明的,默认参数可以多于1个,但必须放在参数序列的后部。
如:Display(string s1 , string s2=” ”,string s3=” ” );
5.使⽤const保护数据
⽤const修饰传递参数,它只能使⽤参数⽽⽆权修改它。这主要是为了提⾼系统的⾃⾝安全。
3.2深⼊讨论函数返回值
返回值类型可以是除数组和函数以外的任何类型。当函数返回值是指针或引⽤对象时,需要注意的是,函数返回所指的对象必须继续存在,因此不能将函数内部的局部对象作为函数的返回值。
1.返回引⽤的函数:数据类型 & 函数名(参数列表);
例如声明:
int & index (int i);
调⽤:
index(3);
2.返回指针的函数:类型标识符&函数名(参数列表);
例如声明:实例化类和实例化对象
float *a=input(num);
调⽤:
float *a= input(num);
3.返回对象的函数:
例如声明:
string input(const in);
调⽤:
string str = input(n);
4.函数返回值作为函数的参数:
例如声明:
int max(int,int);
调⽤:
cout<<max(55,max(25,39))<<endl;
3.3 内联函数
定义内联函数使⽤关键字inline。在C++中,除具有循环语句、switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数。
使⽤内联函数能加快程序执⾏速度,但如果函数体语句多,则会增加程序代码的⼤⼩。由于编译器必须知道内联函数的函数体,才能进⾏内联替换,因此,内联函数必须在程序中第⼀次调⽤此函数的语句出现之前定义。
3.4 函数重载和默认参数
不同对象调⽤函数名具有多种功能,称这种特征为多态性。分为静态多态性和动态多态性。
函数重载是静态多态性。
double max(double m1 , double m2 ){...}
int max(int m1, int m2){...}
char max(char m1, char m2){...}
带默认值参数:
int add (int m1 =0, int m2 = 0, int m3 =0 , int m4 =0){...}
3.5函数模板
将函数模板与某个具体数据类型连⽤,就产⽣了模板函数。
函数模板定义:
函数模板名:<;模板参数>(参数列表)
默认形式:函数模板名(参数列表)
C++还专门定义⼀个仅仅⽤在模板中的关键字typename,它的⽤途之⼀是代替templata参数列表中的关键字class。
例如:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论