2020-09-22

C++语言程序设计复习(一)

一、绪论

面向对象基本概念

  1. 对象:面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。
  2. 类:分类所依据的原则是抽象。面向对象方法中的“类”,是具有相同属性和服务的一组对象的集合。
  3. 封装:封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。
  4. 继承:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。
  5. 多态性:多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。

面向对象的软件开发过程

面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。

完整程序过程

见《C++语言程序设计》P17 图1-2

二、简单程序设计

  1. 简单的I/O格式控制
操纵符名含义
dec数值数据采用十进制表示
hex数值数据采用十六进制表示
oct数值数据采用八进制表示
ws提取空白符
endl插入换行符,并刷新流
ends插入空字符
setprecision(int)设置浮点数的小数位数(包括小数点)
setw(int)设置域宽
//2_1.cpp
# include <iostream> 
# include <iomanip>
// 针对命名空间的指令 
// 预处理指令,将文件iostream中的代码嵌入到程序中该指令所在的地方 
using namespace std;

int main(){
	cout<<"Hello!"<<endl;
	cout<<"Welcome to C++!"<<endl;
	cout<<ends<<sizeof(int);
	cout<<setw(5)<<setprecision(3)<<3.1415<<endl;
	return 0;
}
  1. 算法的基本控制结构
    主要包括顺序结构、选择结构、循环结构。
  • 选择结构:
    • if语句:每层的if要与else配对,如果省略其中某一个else,便要用{}括起该层的if语句来确定层次关系
    • switch语句0:每个case语句只是一个入口标号,并不能确定执行的终止点,因此每个case分支最后应该加上break语句,用来结束整个switch结构,否则会从入口点开始一直执行到switch结构的结束点。
    • switch语句1:当若干个分支需要执行相同的操作时,可以使用多个case分支共用一组语句。
  • 循环结构:
    • 在循环体中要包含改变循环条件表达式的语句
    • 包括while语句、do…while语句、for语句
  • 选择结构与循环结构嵌套使用
  • 其他控制语句:
    • break语句:出现在switch语句或循环体中时,使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。
    • continue语句:可以出现在循环体中,其作用是结束本次循环,接着开始判断决定是否执行下一次循环。
    • goto语句:适宜使用在跳出多重循环时,少用或不用。
  1. 自定义数据类型
    • typedef声明:可以为一个已有数据类型声明多个别名。
    • typedef语法格式:typedef 已有类型名 新类型名表;
    • 枚举类型enum: enum 枚举类型名 {变量值列表};
    • 枚举类型应用说明:对枚举元素按常量处理,不能对他们赋值。
enum Weekday {SUN=7,MON=1,TUE,WED,THU,FRI,SAT};

三、函数

函数有利于代码重用,可以提高开发效率,增强程序的可靠性,也便于分工合作、便于修改维护。

函数的定义

  1. 函数定义的语法形式
    类型说明符 函数名(含类型说明的形式参数表)
    {
    语句序列
    }
  2. 形式参数
    形式参数(简称形参)表的内容如下:
type1 name1,type2 name2,...,typen namen
  1. 函数的返回值和返回值类型
return 表达式;

函数的调用

  1. 函数的调用形式
    如果希望在定义一个函数前调用它,则需要在调用函数之前添加上该函数的原型声明,函数原型声明的形式如下:
类型说明符 函数名(含类型说明的形参表)
  1. 嵌套调用
    函数允许嵌套调用。如果函数1调用了函数2,函数2再调用函数3,便形成了函数的嵌套调用。
  2. 递归调用
    函数可以直接或间接的调用自身,称为递归调用。(典型案例:汉诺塔问题)

函数的参数传递

  1. 值传递
    值传递是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。这一过程是参数值的单向传递过程,一旦形参获得了值便与实参脱离关系,此后无论形参发生了怎样的改变都不会影响到实参。
  2. 引用传递
    引用是一种特殊类型的变量,可以被认为是另一个变量的别名。
int &ri=i; //建立一个int型的引用,并将其初始化为变量i的一个别名
void swap(int &a,int &b){
} //实际上传入的是地址

内联函数

针对功能简单、规模较小又频繁使用的函数。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。节省了参数传递、控制转移等开销。
其语法形式如下:

inline 类型说明符 函数名(含类型说明的形参表)
{
	语句序列
}

带默认形参值的函数

函数在定义时可以预先声明默认的形参值。(右边默认)

int add(int x, int y=5, int z=6) //right
int add(int x=1, int y=5, int z) //wrong
int add(int x=1, int y, int z=6) //wrong

在相同的作用域内,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义,即使前后定义的值相同也不行。

函数重载

两个以上的函数,具有相同的函数名,但是形参的个数和类型不同,编译器根据形参和实参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。(返回值类型不作为重载标准)

int add(int x, int y);
float add(float x, float y); //形参的类型不同

C++系统函数

C++不仅允许用户根据需要自定义函数,而且C++的系统库中提供了几百个函数可供程序员使用。
使用前需要用include指令嵌入相应的头文件(系统函数的原型声明文件)。
查阅各种常使用的标准C++函数的原型、头文件和用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值