C 面向对象程序设计1(2)解析PPT课件
合集下载
C 面向对象程序设计.ppt
循环结构与选择结构 相互嵌套
例6:
源程序:
#include<iostream.h> void main() {
int i(1),a(0); for(;i<=5;i++) {
继续
例6:
do{ i++; a++; }while(i<3);
i++; } cout<<a<<","<<i<<endl; }
if (条件 2) 语句 1 else 语句2 else (条件 3) 语句3 注意:语句1、2、3、4可以是复合语句;每层的if 要与 else 配对,如果省略某一个 else ,便要用{ }括起该 层的 if 语句来确定层次关系。
例:
例2: 比较两个数的大小
源程序:
#include<iostream.h> void main () {
1、break语句
使程序从循环和switch语句内跳出,继续 执行逻辑上的下一条语句。 break语句不能用在 别处.
2、continue语句
结束本次循环,接着开始判断决定是否继续 执行下一次循环。
3.4 其他流程控制
3.4.1 goto语句
利用goto语句可以无条件地转移到指定标号处。
标号定义格式: 标号 :语句语句 转移到指定标号的格式: goto标号:
2、循环条件如果省略,循环将无
例 终止的进行下去。
例5:输入一个整数,求出它的 所有因子
源程序:
#include<iostream.h> void main(void) {
int n,k; cout<<"Enter a positive integer:";
例6:
源程序:
#include<iostream.h> void main() {
int i(1),a(0); for(;i<=5;i++) {
继续
例6:
do{ i++; a++; }while(i<3);
i++; } cout<<a<<","<<i<<endl; }
if (条件 2) 语句 1 else 语句2 else (条件 3) 语句3 注意:语句1、2、3、4可以是复合语句;每层的if 要与 else 配对,如果省略某一个 else ,便要用{ }括起该 层的 if 语句来确定层次关系。
例:
例2: 比较两个数的大小
源程序:
#include<iostream.h> void main () {
1、break语句
使程序从循环和switch语句内跳出,继续 执行逻辑上的下一条语句。 break语句不能用在 别处.
2、continue语句
结束本次循环,接着开始判断决定是否继续 执行下一次循环。
3.4 其他流程控制
3.4.1 goto语句
利用goto语句可以无条件地转移到指定标号处。
标号定义格式: 标号 :语句语句 转移到指定标号的格式: goto标号:
2、循环条件如果省略,循环将无
例 终止的进行下去。
例5:输入一个整数,求出它的 所有因子
源程序:
#include<iostream.h> void main(void) {
int n,k; cout<<"Enter a positive integer:";
2019年第C面向对象程序设计.ppt
2.1.3 构造函数和析构函数
4. 构造函数的重载 构造函数可以被重载,C++会根据对象定义中的参数选择合适的构造函数。例如: [例Ex_ConOverLoad] 构造函数的重载 #include <iostream.h> class CDate { public:
CDate(); CDate(int day); CDate(int month, int day); CDate(int year, int month, int day); // 其他公共成员 private: int nYear, nMonth, nDay; }; CDate::CDate() { nMonth = 7; nDay = 30; nYear = 2002; cout<<nYear<<"-"<<nMonth<<"-"<<nDay<<endl; } CDate::CDate(int day)
}
// 其他公共成员
private:
int nYear, nMonth, nDay;
};
void main()
{
CDate day1(2002, 8);
CDate day2(day1);
}
2.1.3 构造函数和析构函数
[例Ex_ConCopy] 拷贝构造函数的使用 运行结果为:
2.1.3 构造函数和析构函数
2.1.1 类的定义
定义类时还应注意: (1) 类中的数据成员的数据类型可以是任意的,但不允许对所定义的数据成员进行初始化, 例如类CMeter中,下面的定义是错误的:
class CMeter
C语言面向对象程序设计ppt课件
函数返回值为指向环链最表新版的整理最pp后t 一个节点的指针
8
3. Jose * count(int, Jose *) 两个参数分别为数小孩的个数、当前节点的指针 函数返回值为数了小孩个数后的当前节点的前一个节点的指针
4. void process(int, int, Jose *) 三个参数分别为小孩总数、间隔数、当前节点的前一个节点 的指针
定义两个类: Ring类 属性: 链表的始地址; 当前指针; 哨兵指针
操作: 按照间隔数确定当前指针; 输出小孩的编号; 将当前小孩从链表中删除; 构造环链表; 析构环链表;
Jose类 属性: 总数; 间隔数; 开始位置 操作: 属性赋初值; 处理所有小孩并找出胜利者
最新版整理ppt
13
//文件为ring.h
1 n
n-1
2 3
...
};
其函数声明如下:
1. int assign(int *, int *, int *)
三个参数分别为指向总数、间隔数、开始位置的指针
函数返回值为1,则初始化成功;为0,则失败
2. Jose * initial(int , Jose *)
两个参数分别为总数和结构指针, 指向待初始化的结构数组
return 1;
}
最新版整理ppt
10
jp
Jose * initial(int n, Jose * jp)
{
int nline=0;
Jose * px = jp;
for(int i=1; i <= n; i++) {
px -> next = jp + i%n;
px ->code = i;
面向对象程序设计第一章课件(共32张PPT)
1.4.1 面向对象的从基逻本辑概上念看,一个对象是独立存在的模块。 (object) 模块内部状态不因外界的干扰而改变,也 (1)具有唯一标识不名会,涉可及以到区其别他于模其他块对;象模。块间的依赖性极 (2)具有一个状态,小由或与几其乎相关没联有的;属各性模值集块合可所独表立征。地被系统所 ((43))一有个一对组象操的作成方员组破法仍即合 坏可服选 其以务用 他是,一, 模每个也 块个对可 。操象作被。决程定序对员象重的用一种,行不为必。担心
1.2 面向对象是软件方法学的返朴归真
客观世界是由许多具体的事物、抽象的概念、 规则等组成的,我们将任何感兴趣或要加以研 究的事、物、概念统称为对象Object。
每个对象都有各自的内部状态和运动规律, 不同对象之间通过消息传递进行相互作用和联 系就构成了各种不同的系统。面向对象的方法 正是以对象作为最基本元素的一种分析问题和 解决问题的方法。
采用对象的观点看待所要解决的问题,并将其抽象为应用系 统是极其自然与简单的,因为它符合人类的思维习惯,使得应用系 统更容易理解。同时,由于应用系统是由相互独立的对象构成的,使 得系统的修改可以局部化,因此系统更易于维护。
软件开发从本质上讲就是对软件所要处理的问题域进行正确
的认识,并把这种认识正确地描述出来。既然如此,那就应该直 接面对问题域中客观存在的事物来进行软件开发,这就是面向 对象。另一方面,人类在认识世界的历史长河中形成的普遍有 效的思维方法,在软件开发中也应该是适用的。在软件开发中 尽量采用人们在日常生活中习惯的思维方式和表达方式,这就 是面向对象方法所强调的基本原则。软件开发从过分专业化的 方法、规则和技巧中回到了客观世界,回到了人们的日常思维, 所以说面向对象方法是软件方法学的返朴归真。
3.面向对象程序设计:是在面向过程的程序设计基础上的质 的飞跃。面向对象方法的产生,是计算机科学发展的要求。 面向对象的技术在系统程序设计、数据库及多媒体应用等 领域都得到广泛应用。
1.2 面向对象是软件方法学的返朴归真
客观世界是由许多具体的事物、抽象的概念、 规则等组成的,我们将任何感兴趣或要加以研 究的事、物、概念统称为对象Object。
每个对象都有各自的内部状态和运动规律, 不同对象之间通过消息传递进行相互作用和联 系就构成了各种不同的系统。面向对象的方法 正是以对象作为最基本元素的一种分析问题和 解决问题的方法。
采用对象的观点看待所要解决的问题,并将其抽象为应用系 统是极其自然与简单的,因为它符合人类的思维习惯,使得应用系 统更容易理解。同时,由于应用系统是由相互独立的对象构成的,使 得系统的修改可以局部化,因此系统更易于维护。
软件开发从本质上讲就是对软件所要处理的问题域进行正确
的认识,并把这种认识正确地描述出来。既然如此,那就应该直 接面对问题域中客观存在的事物来进行软件开发,这就是面向 对象。另一方面,人类在认识世界的历史长河中形成的普遍有 效的思维方法,在软件开发中也应该是适用的。在软件开发中 尽量采用人们在日常生活中习惯的思维方式和表达方式,这就 是面向对象方法所强调的基本原则。软件开发从过分专业化的 方法、规则和技巧中回到了客观世界,回到了人们的日常思维, 所以说面向对象方法是软件方法学的返朴归真。
3.面向对象程序设计:是在面向过程的程序设计基础上的质 的飞跃。面向对象方法的产生,是计算机科学发展的要求。 面向对象的技术在系统程序设计、数据库及多媒体应用等 领域都得到广泛应用。
(2024年)c面向对象程序设计(完整课件)pptx
2024/3/26
18
派生类构造函数和析构函数
2024/3/26
派生类构造函数
派生类的构造函数负责初始化派生类新增的数据成员和继承的基类数据成员。在 构造派生类对象时,首先调用基类的构造函数,然后再执行派生类的构造函数。
派生类析构函数
派生类的析构函数负责释放派生类对象所占用的资源,包括派生类新增的数据成 员和继承的基类数据成员。在销毁派生类对象时,首先执行派生类的析构函数, 然后再调用基类的析构函数。
c面向对象程序设计(完整课件 )pptx
2024/3/26
1
目录
2024/3/26
• 面向对象程序设计概述 • C语言基础 • 类与对象 • 继承与派生 • 多态性 • 模板与泛型编程 • 文件操作与流处理
2
01 面向对象程序设计概述
2024/3/26
3
面向对象程序设计概念
面向对象程序设计(Object-Oriented Programming,OOP)是一种编程范式或 编程风格,它以对象为基础,利用类和对象的概念来设计和实现程序。
6
02 C语言基础
2024/3/26
7
C语言概述
C的起源和发展
介绍C的历史背景、发展 过程和重要里程碑。
2024/3/26
C的特点和优势
阐述C语言的特点,如面 向对象、高效、可移植等 ,以及相比其他语言的优 势。
C的应用领域
列举C在各个领域的应用 ,如系统软件、游戏开发 、嵌入式系统等。
8
C语言基本语法
ofstream
用于写入文件的输出文件流类。
2024/3/26
ifstream
用于读取文件的输入文件流类。
C面向对象程序设计第2章_类和对象PPT课件
成 员
float score;
void display( )//函数成员
{
<<endl;
cout<<”number: ”<< number; 成
cout<<”name: ”<< name;
员
cout<<”score: ”<< score
函
数
}
};
11
一个复数结构的例子
struct complex{ double real; double image; void init(double r,double i) { real=r; image=i; } double realcomplex() { return real; } …;
公有的。 • 此处所指成员包括数据成员和成员函数。
13
私有成员和公有成员的声明
struct complex{ private:
double real; double image; public: void init(double r,double i) { real=r; image=i; } double realcomplex( ) { return real; } …; };
/*独立函数display */
{
void display(Student * stu)
cout<<”number: ”<< number; 成
{
cout<<”name: ”<< name;
员
printf(”number:%d”,stu->number);
cout<<”score: ”<< score
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void f2(int &xx) { xx+=10;}
void main(void)
{ int x=0;
cout<<"x="<<x<<endl; x=0
f1(&x); cout<<"x="<<x<<endl; f2(x);
x=10 x=20
cout<<"x="<<x<<endl;
}
void dd(int &x, int &y, int z)
void main( ) { p(4)+=12; cout<<“a=“<<a<<endl; }
a=16
例:#include <iostream.h> int a[ ]={1,2,3,4,5,6,7,8,9,10}; int &pg (int); void main( ) {for (int i=1;i<10;i++) pg (0)+=pg (i); cout<<pg (0); } int &pg (int i) { return (a[ i ]); } 55
(1) 13 -17 5
dd(a,b,c);
cout<<a<<‘\t’<<b<<‘\t’<<c<<endl;
}
函数的返回值为引用类型
可以把函数定义为引用类型,这时函数的返 回值即为某一变量的引用(别名),因此, 它相当于返回了一个变量,所以可对其返回 值进行赋值操作。
例:#include "iostream.h" int a=0; int &p( int b) {a+=b; return a;}
形参为指针变量
形参为整型引用 void change(int &x, int &y) { int t;
t=x; x=y; y=z; } void main( ) { int a=3,b=5;
change(a,b); //实参为变量 cout<<a<<‘\t’<<b<<endl;
void change(int *x, int *y)
{ int t;
t=*x; *x=*y; *y=z;
}
void main( )
{ int a=3,b=5;
change(&a,&b); //实参为地址
cout<<a<<‘\t’<<b<<endl;
} a 35
b 53
} x &a t 3 &b y
void f1( int *px) { *px+=10;}
例1:int i=3;
const int &a=i+3; 例2:const int &j=9;
下列程序错在那里?
#include <iostream.h> void main() {int i=4;
const int &j=i+3;
j++; ×
cout<<j; }
#include <iostream.h> void main() {int i=4;
(*pa)++;
cout<<“a=“<<a<<endl;
(*rp)++;
cout<<“a=“<<a<<endl; }
a=11 a=12
引用与函数
引用的用途主要是用来作函数的参数或函数的返回值。
引用作函数的形参,实际上是在被调函数中对实参变量 进行操作。
void change(int &x, int &y)//x,y是实参a,b的别名
1.3.9 作用域运算符 ::
例:#include "iostream.h" float a=13.5; void main( ) {int a=5; cout<<a; cout<<::a; }
1.3.10 字符串变量
• 定义字符串变量 • 对字符串变量的赋值 • 字符串变量的输入输出 • 字符串变量的运算 • 字符串数组
int max ; int &refmax=max; max=5 ; refmax=10;
refmax=max+refmax;
max 1250 refmax
对引用的进一步说明
1、不能建立void类型的引用 void &a=9;
2、不能建立引用数组 char c[6]=“hello”; char &rc[6]=c; 错误
3、可以建立指针变量的引用 int i=5; int *p=&i; int *&pt=p;
注意:int &*pt=p; 错误
4、若使用const对引用限定,这不允许改变 引用的值 int i=5; const int &a=i; a=3; (错误) i=3;(正确)
5、可以使用常量或表达式对引用进行 初始化,但必须用const进行声明。
{ x=x+z; x=8 y=y-x; y=-4
x=13 yout<<“(2)”<<x<<‘\t’<<y<<‘\t’<<z<<endl;
}
void main(void) { int a=3,b=4,c=5;
for(int i=0;i<2;i++)
(2) 8 -4 10 (2) 13 -17 10
{ int t;
t=x; x=y; y=z; }
a 35 x
b 53 y
void main ( ) { int a=3,b=5;
t3
change (a, b); //实参为变量
cout<<a<<‘\t’<<b<<endl;
输出: 5 3
}
引用作为形参,实参是变量而不是地址,这与指针变量作
形参不一样。
1.3.11 动态分配/撤销内存的运算符 new和delete
1、指针变量= new 类型名 例:int *pi=new int;
2、指针变量= new 类型名(初值表达式) 在为变量分配空间时,进行初始化 例:int *pi=new int(1000);
1.3.8 内置函数
格式: inline 函数值类型 函数名(形参列表)
{函数体}
内联函数
主调函数 调用处
被调函数
主调函数 调用处
内联函数 被调函数
将被调函数体的代 码直接插到调用处
内联函数的实质是用存储空间(使用更 多的存储空间)来换取时间(减少执行时 间).
内联函数的定义方法是,在函数定义时, 在函数的类型前增加修饰词inline。
const int &j=i;
j++; ×
cout<<j; }
#include <iostream.h>
void main()
{int i=4;
const int &j=i;
i++;
cout<<j;
}
正确
例:#include "iostream.h"
void main( )
{ int a=10,*pa=&a,*&rp=pa;