C++面向对象程序设计1_第1页
C++面向对象程序设计1_第2页
C++面向对象程序设计1_第3页
C++面向对象程序设计1_第4页
C++面向对象程序设计1_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++面向对象程序设计安徽师范大学数学计算机学院腾莉1C++面向对象程序设计

谭浩强编著

清华大学出版社2C++语言开展历史60年代,MartinRichards为计算机软件人员在开发系统软件时,作为记述语言使用而开发了BCPL语言。1970年,KenThompson在继承BCPL语言的许多优点的根底上创造了实用的B语言。1972年,贝尔实验室的DennisRitchie和Briankernighan在B语言的根底上,作了进一步的充实和完善,设计出了C语言。80年代初,贝尔实验室在C语言的根底上开发了C++语言。3C语言的主要特点:C语言是一种结构化的程序设计语言,语言本身简洁、使用灵活方便。运算符丰富,除了提供对数据的算术逻辑运算外,还提供了二进制的位运算。程序的可移植性好4随着C语言应用的推广,C语言存在的一些缺陷或缺乏也开始流露出来,并受到大家的关注。如:C语言对数据类型检查的机制比较弱;缺少支持代码重用的结构;随着软件工程规模的扩大,难以适应开发特大型的程度等等。5第一章C++的初步知识61.1从C到C++C++是从C语言的根底上开展起来的C++保存了C语言原有的精华C++克服了C语言标准性缺乏的特点C++提供全面的面向对象的编程支持71.2简单的C++程序#include<iostream>intmain(){cout<<"Iamastudent.\n";return0;}主函数函数体开始函数体结束输出流,在屏幕上打印引号内的字符串分号,一条完整语句的结束符本程序编译执行后,在屏幕上输出Iamastudent.包含文件8#include<iostream.h>voidmain(){cout<<"Iamastudent.\n";}教材P8的说明。传统写法9#include<iostream.h>intmain(){inti;cin>>i;cout<<"i="<<i<<endl;return0;}例子分析教材例1.2和1.310说明:使用cout输出流对象,配合插入运算符“<<“进行输出,endl是换行符使用cin输入流对象,配合提取运算符“>>“进行输入使用cin和cout需要使用到头文件iostream111.3C++对C的扩充1.3.1C++的输入输出程序在执行期间,接收外部信息的操作称为程序的输入;而把程序向外部发送信息的操作称为程序的输出。在C++中没有专门的输入输出语句,所有输入输出是通过输入输出流来实现的。

12

要使用C++提供的输入输出时,必须在程序的开头增加一行:

#include<iostream.h>131.用cout进行输出

当要输出一个表达式的值时,可使用cout来实现,其一般格式为:

cout<<表达式<<表达式......;

其中运算符“<<”称为插入运算符,它将紧跟其后的表达式的值,输出到显示器当前光标的位置。14#include<iostream.h>main(){inta=6;floatf1=12.4;cout<<a<<'\t'<<f1<<'\t'<<endl;}显示器显示器a6f112.4612.415charch1=‘a’,ch2=‘b’;cout<<“c1=”<<ch1<<‘\t’<<“c2=”<<ch2<<endl;c1=a c2=binti1=4,i2=5;floata=3.5;cout<<“a*i1=”<<a*i1<<endl<<“a*i2=”<<a*i2<<endl;a*i1=14a*i2=17.516指定输出项占用的宽度:在输出的数据项之间进行隔开的另一种方法是指定输出项的宽度。如上面的两个输出语句可改写为:i=4;j=12;m=7;k=2;cout<<setw(6)<<i<<setw(10)<<j<<endl;_____4________12cout<<setw(5)<<m<<setw(10)<<j*k<<endl;____7________24其中setw(6)指明其后的输出项占用的字符宽度为6,即括号中的值指出紧跟其后的输出项占用的字符位置个数,并向右对齐。setw是“setwidth”的缩写。17使用setw()应注意以下三点:1、在程序的开始位置必须包含头文件iomanip.h,即在程序的开头增加:#include<iomanip.h>2、括号中必须给出一个表达式〔值为正整数〕,它指明紧跟其后输出项的宽度。3、该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其后的输出项后,又回到原来的缺省输出方式。18#include<iostream.h>#include<iomanip.h>main(){inta=6;floatf1=12.4;cout<<setw(6)<<a<<setw(10)<<f1<<endl;}_____6______12.419

2.用cin进行输入cin>>变量名1>>变量名2......;inta,b;cin>>a>>b; //程序运行至此停下,等待从键盘输入变量值键盘输入:35<CR>或:3<CR>5<CR>均可。a3键盘b5键盘输入语句自动过滤空白字符。20实型数据、字符型数据同整型数据一样。floatc,d;cin>>c>>d;charch1,ch2;cin>>ch1>>ch2;假设输入:ab<CR> 那么ch1为a, ch2为b。假设输入:ab<CR> 那么ch1为a, ch2为b。cin可自动跳过输入的空格和回车21注:C++中允许变量的定义放在程序的任何位置,但必须在使用该变量前定义。221.3.2用const定义常变量c语言中:#definePI3.14c++中:

constfloatPI=3.14;注:常变量具备变量的属性,但程序运行期间的值不可变。231.3.3函数原型声明形式:函数类型函数名〔参数表〕例如:intmax(intx,inty);intmax(int,int);注:假设被调函数出现在调用函数之后,无论被调函数的函数值类型如何,必须进行函数声明。241.3.4函数的重载C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个数或参数类型不同,这些同名的函数用来实现不同的功能,称为函数的重载。25例:#include<iostream.h>voidprint(doublea){cout<<++a;}voidprint(inta,intb){cout<<b<<a;}voidmain(){print(3.14);print(3,14);}4.14143261.3.5函数模板形式:template<typenameT>

通用函数定义

template<classT>

通用函数定义注:函数模板适用于函数参数的个数相同而类型不同,且函数体相同的情况。27#include<iostream.h>template<typenameT>Tmax(Ta,Tb,Tc){if(b>a)a=b;if(c>a)a=c;returna;}intmain(){inti1,i2,i3,i;doubled1,d2,d3,d;longg1,g2,g3,g;cin>>i1>>i2>>i3;cin>>d1>>d2>>d3;cin>>g1>>g2>>g3;i=max(i1,i2,i3);d=max(d1,d2,d3);g=max(g1,g2,g3);cout<<i<<d<<g<<endl;return0;}p14例1.8281.3.6有默认参数的函数例:floatarea(floatr=6.5);area();area(7.5);例:floatvolume(floath,floatr=12.5);volume(45.6);volume(45.6,34.4);29有默认参数的函数说明:实参个数可与形参个数不同,未给定的实参,使用形参的默认值。最好在函数声明中给出默认值。默认值参数应全部出现在参数列表的最右端。一个函数不能既作为重载函数,又作为有默认值的函数。30#include"iostream.h"intleijia(inta,intb=2,intc=3);voidmain(){intx=5,y=6,z=7,he;he=leijia(x,y,z);cout<<"he="<<he<<endl;he=leijia(x,y);cout<<"he="<<he<<endl;he=leijia(x);cout<<"he="<<he<<endl;}intleijia(inta,intb,intc){cout<<"a="<<a<<"b="<<b<<"c="<<c<<endl;return(a+b+c);}311.3.7变量的引用一、引用的概念

1、定义:对变量起另外一个名字(别名)2、格式

类型&引用变量名=原变量名;

322、引用在定义的时候一定要初始化。1、原变量名必须是一个已定义过的变量:例如:intmax;

int&refmax=max;int&refmax;int&refmax=max;错误,没有具体的引用对象max是已定义过的变量33二、对引用变量的说明3、对引用的操作就是对被引用的变量的操作。4、引用类型变量的初始化值不能是一个常数。如:int&ref1=5;//错误int&ref=i;34例如:intmax;

int&refmax=max;max与refmax在内存中占用同一地址maxrefmax510#include"iostream.h"main(){intmax;int&refmax=max;max=5;refmax=10;refmax=max+refmax;cout<<max<<refmax<<endl;}20max与refmax同一地址355、定义引用时的数据类型,必须与其代表的变量类型一致。

floata;

int&b=a;6、引用只能代表一个变量。inta1,a2;

int&b=a1;

int&b=a2;

36错误错误7、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。inta,*p;int&m=a;apm10p=&m;*p=10;&m&是变量的引用&是变量的地址378、可以对某个变量进行屡次引用#include"iostream.h"voidmain(){intb;int&a=b;int&c=b;int&d=b;a=3;b=a+c+d;cout<<a<<b<<c<<d;}结果:999938#include"iostream.h"voidmain(){intnum=1;int&ref=num;ref=ref+2;cout<<num;num=num+3;cout<<ref;}3639以下哪些选项是错误的选项是:A〕floati;B〕inti;int&j=i;int&j;j=i;C〕floati;D〕chari,j;float&j=i;char&k=i;char&k=j;ABD40设inti=32;以下正确的选项是:Aint&x=i;Bint&x=32;Cint&x;Dint&x=&i;A419、不能建立void类型的引用

void&a=9;10、不能建立引用数组

charc[6]=“hello”;

char&rc[6]=c;42错误错误11、可以建立指针变量的引用

inti=5,*p=&i;

int*&pt=p;

注意:int&*pt=p;错误

#include"iostream.h"voidmain(){inta=10,*pa=&a,*&rp=pa;(*pa)++;cout<<"a="<<a<<endl;(*rp)++;cout<<"a="<<a<<endl;}a=11a=1243三、引用的主要两点用途〔引用与函数〕1、引用作函数的形参44voidchange(int&x,int&y){intt;t=x;x=y;y=t;}voidmain(){inta=3,b=5;change(a,b);cout<<a<<‘\t’<<b<<endl;}35abxyt353输出:5345引用作函数的形参,实际上是在被调函数中对实参变量进行操作。引用作为形参与指针变量作形参区别voidchange(int&x,int&y){intt;t=x;x=y;y=t;}voidmain(){inta=3,b=5;change(a,b);//实参为变量

cout<<a<<‘\t’<<b<<endl;}voidchange(int*x,int*y){intt;t=*x;*x=*y;*y=t;}voidmain(){inta=3,b=5;change(&a,&b);//实参为地址

cout<<a<<‘\t’<<b<<endl;}形参为整型引用形参为指针变量a3b5xyt&a&b35346#include"iostream.h“voidf1(int*px){ *px+=10;}voidf2(int&xx){ xx+=10;}voidmain(void){ intx=0; cout<<"x="<<x<<endl; f1(&x); cout<<"x="<<x<<endl; f2(x); cout<<"x="<<x<<endl;}x=0x=10x=2047#include"iostream.h"voiddd(int&x,int&y,intz){x=x+z;y=y-x;z=10;cout<<"(2)"<<x<<'\t'<<y<<'\t'<<z<<endl;}voidmain(void){inta=3,b=4,c=5;for(inti=0;i<2;i++)dd(a,b,c);cout<<"(1)"<<a<<'\t'<<b<<'\t'<<c<<endl;}(2)8-410(2)13-1710(1)13-175482、函数的返回值为引用类型把函数定义为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论