6、类简介
类是用户定义的一种数据类型,类相比对象就像类型相比变量,类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。
举例来说类就像所有的著名演员,而对象就好比某个著名演员。
Intcarrots,这个代码创建一个类型为int的变量,corrots可以存储整数,可以加和减,来看cout,它是一个ostream类的对象,ostream类描述了它包含的对象表示的数据以及可以对他执行的所有操作,如cout将数字或字符插入到输出流中,另外的还有cin。
该类库是语言标准制定的类。
7、函数
C++函数分为两种:
有返回值和没有返回值
有返回值:
有返回值的函数将生成一个值,该值可以赋给变量或在其他表达式中使用,例如,标准库中含有一个sqrt()的函数,它返回平方根,加入要计算6.25的平方根并将这个值(返回值)赋给变量,则可以使用一下语句,
X=sqrt(6.25);//计算6.25的平方根,并将值赋给变量x//
表达式sqrt(6.25)调用sqrt()函数,sqrt(6.25)称为函数函数调用,被调用的函数叫被调用函数sqrt(),包含函数调用的函数叫做调用函数,如前面声明的函数头intmain()。
参数是发送给函数的值,返回值是从函数中发送回去的值。
8、函数原型
在使用函数之前,编译器必须知道函数的参数类型和返回值类型,
C++使用的方式是使用函数原型语句。
C++中应为每个使用的函数提供原型。
函数原型就像使用变量必须变量声明---使用函数就必须提供函数原型(也可称为函数声明)
比如sqrt()函数在c++中定义为一个(可能)带小数部分的数字(如6.25)作为参数,并返回一个相同“类型”的数字,有些语言称这种数字为实数,c++称这种类型为double,那么sqrt()的原型就像这样:
doublesqrt(double);
第一个double意味着sqrt()返回一个double值,括号中的double意味着sqrt()需要一个double参数。
因此该原型对sqrt()函数的描述和下面代码使用的函数相同:
doublex;//原型结尾有分好表明是一条语句,如果省略分好编译器就会把这行解释为函数头,并接着要求提供定义该函数的函数体。
X=sqrt(6.25)
在程序中使用sqrt()函数时,也必须提供函数原型,可用两种方法来实现。
1、在源代码中输入函数原型
2、在头文件(cmath)中定义函数原型
因有使用sqrt()函数因此这里输入定义函数原型头文件cmath
9、使用库函数
C++还允许创建变量时进行赋值,
如:
doublea=sqrt(b)这个过程叫做初始化。
10、函数变体
有些函数需要多项信息,这些函数使用多项参数,参数间用,号隔开,
例如数学函数pow()接受两项函数,返回值以第一个参数为底,第二个参数为幂,该函数的原型如下:
Doub=pow(double,double).
例如要计算5的8次方
Pw=pow(5.0,8.0);
另外有一些函数不接受任何参数,例如有一个c库
中包含一个rand()函数,该函数不接受任何参数,并返回一个随机整数,该函数的原型如下:
Intrand(void)
关键字void指出,该函数不接收任何参数,如果括号为空省略void,则c++解释为一个不接受任何参数的隐式声明。
可以这样使用该函数。
Myguess=rand();
!
!
c++中函数调用必须使用()号,即使没有参数。
还有一些函数,如编写了一个函数它按美元美分格式显示数字,当向他传递参数23.5时,它将在显示屏显示$23.50。
由于这个函数把值发送给了屏幕,而不是调用程序,因此它不需要返回值,
可以在原型中使用void来指定返回类型,以指出没有返回值。
Voidbucks(double);
不返回值的函数不能将该函数调用放在赋值语句或其他表达式中。
相反,应使用一条纯粹的函数调用语句
Bucks(1234.56);
11、用户定义的函数(此节在第7页有练习题)
添加另外一个用户定义的函数必须在使用之前提供其原型,但是必须提供新函数的源代码,这里放在main()函数后面。
(理解为调用simon必须提供simon函数源代码,例中第二个函数体。
)
程序清单中mian()函数调用了2次库函数simon(),一次的参数为3,一次的参数为变量count。
下面是程序2.5的运行情况。
12、函数格式
在2.5中函数simon()定义与main()函数定义相同,首先有个函数头,然后有花括号开始的函数体。
13、函数头
在上面2.5清单中,simon()函数的函数头如下
Voidsimon(intn)
开头的void表示simon()没有返回值,因此main()调用simon()不会生成可在main()中赋予变量的数字。
因此调用该函数应按如下方式:
Simon(3);
由于simon没有返回值,因此不能这样用它:
so=simon(3);
在以上实例中,voidsimon(intn)括号中的int表示使用该函数时应该提供一个int参数,n是一个新的变量,函数调用传递的值将赋予给它,如下面的函数调用将3赋予给simon()函数头中的变量n。
Simon(3);
当函数体中使用cout输出n时,将使用函数调用传递的值,因此2.5实例第一行输出为什么simon(3)显示3的原因。
Simon()的函数头已经说明,simon接收int参数,但不返回任何值。
14、复习intmain()函数头
Intmain()开头的int表明,main返回一个int值,函数后面的括号表明(可包含void),main()没有参数,对于有返回值的函数(main()有返回值,)应用关键字retuen来提供返回值,并结束函数,这就是为什么要在main()结尾使用return0;语句的原因。
mian()函数的值并不返回给程序而是返回给操作系统,操作系统使用main()函数,之后的return0要求返回是0,如0表示程序运行成功,如是非0值表示程序不能正常运行。
15、关键字
在计算机语言中的词汇如:
void、double、int等等称为关键字,为c++语言中的专用词汇,这些关键字不能用作变量名,也不能用作函数名。
例外:
如cout在不使用输出操作的时候可以把它作为变量名,但不能在有输出的情况下当做变量名来使用
。
16、用户定义有返回值的函数
有返回值的函数练习题
//stone,将英石转换为磅.cpp
#include
intstonetolb(int);//提供函数stonetolb原型,返回值为int,参数值为int)
intstonetolb(intsts)//函数头,括号中的int表明,使用stonetolb时应提供一个int参数,sts是一个新的变量。
//函数调用时传递的值将被赋予给sts)上面stonetolb(stone)stone的值被赋予给sts
{
return14*sts;//有返回值的函数,应用return来提供返回值,这里返回main()
}
intmain()//函数头,main()返回值为int
{
usingnamespacestd;//使用命名空间std
intstone;//变量声明
cout<<"请输入一个整数,单位为“英石”";//输出语句
cin>>stone;//输入键击数据
intpounds=stonetolb(stone);//调用stonetolb变量参数值为stone,返回值为整数赋予pounds(磅),这里
cout<cout<return0;//执行结束返回0
}
//函数调用时传递的值:
函数被调用时赋予的值!
//有返回值的函数,应用return来提供返回值,main调用了该函数,这里返回给main()
没有返回值的练习题
#include
void simon(int); //定义simon原型,参数为int,返回值为void
int main()//函数声明
{
using namespace std;
simon(3); //调用simon,参数值为3
cout<<"pick an intrger:
";
int count; //定义变量count为整数
cin>>count;//输入键击数据,并赋予给count;
simon(count); //再次调用simon
cout<<"done"<return 0;
}
//因调用了simon函数,下面提供该函数的源代码
void simon(int n)//函数调用时传递的值赋予给"n"
{
using namespace std;
cout<<"Simon says touch your toes
"<}
17、多函数程序中使用using指令
在上面的有返回值函数的例子中,两个函数程序都使用了using指令,这是因为都使用了cout,必须用到名称空间std的定义。
在以上实例中,可以用另一种方法让两个函数都能访问名称空间std,即将编译指令放在外面,且两个函数的前面。
让程序能够访问名称空间的方法,四种:
总结
1、C++程序由一个或多个被称为函数的模块组成
2、程序从main()函数开始执行,该函数必不可少
3、函数由函数头和函数体组成,函数头指出函数的返回值(如有)的类型和函数期望通过参数传递给它的信息的类型。
函数体由一系列位于花括号{中的c++语句组成,有多种类型的c++语句,包括以下六种:
⊙声明语句:
定义函数中使用的变量名称和类型
⊙赋值语句:
使用赋值运算符(=)给变量赋值
⊙消息语句:
将消息发送给对象,激发某种行动
⊙函数调用:
执行函数,被调用的函数执行完毕后,程序返回到函数调用语句后面的语句
⊙函数原型:
声明函数的返回类型、函数接收的参数数量和类型
⊙返回语句:
将一个值从被调用的函数哪里返回到调用函数中
◆类是用户定义的数据类型的规范,详细描述了如何表示星系以及可对数据执行的操作。
对象是根据类规范创建的实体,奖项简单变量是根据数据类型描述创建的实体一样。
◆c++可使用大量的c库函数,要使用库函数,应当包含提供该函数原型的头文件。
复习题
1.在c++程序的模块叫什么?
答:
函数
2.下面的于处理器编译指令是做什么的?
#include
答:
在编译之前,使用iostream文件替换编译指令
3.下面的语句是做什么用的?
usingnamespacestd;
答:
使用std名称空间的名称定义
4.什么语句可以用来打印“Hello,world”然后开始新的一行
答:
cout<<”Hello,word”<5.什么语句可以用来创建名为cheeses的整数变量?
答:
intcheeses;
6.什么语句可以用来将值32赋给变量cheeses?
答:
cheeses=32;
7.什么语句可以用来将从键盘输入的值读入变量cheeses?
答:
cin>>cheeses;
8.什么语句可以用来打印“WehaveXvarietiesofcheeses“其中X为变量cheeses的当前值?
答:
cout<<”Wehave”<9.下面的函数原型指出了关于函数的哪些信息?
答:
intfroop(doublet)//调用froop函数时,应提供一个参数,该参数类型为double,返回值为int。
Voidrattle(intn)//调用rattle函数时应提供一个参数,参数类型为int,该函数不返回任何值.可以这样用他rattle(3);
Intprune(void)//该函数不接受任何参数,返回一个整数,例如可以这样用他
int函数名=prune();
10.定义函数时,什么情况下不必使用关键字return。
答:
函数的返回类型为void的情况下,不必使用他,但如果不提供返回值,则可以用他return;
11.架设您编写的main()函数包含如下代码:
Cout<<”请输入PIN码”;
而编译器指出cout是一个未知标识符,导致问题的原因可能是什么,指出3中修复这种问题的方法。
答:
因为头文件没有包含ostream头文件,
修复方法:
1、在头文件加入#include2、
编程练习
编写一个c++程序,它显示您的姓名和地址
#include
usingnamespacestd;
intmain()
{
cout<<"我叫邹伟"<cout<<"住在中国";
cin.get();
cin.get();
return0;
}
编写一个c++程序,它要求用户输入一个以long为单位的距离,然后将他转换为码,(一long等于220码).
#include
usingnamespacestd;
intmain()
{
intlongs;
intlonge;
cout<<"请输入要转换的数值,按回车键确认:
";
cin>>longs;
longe=longs*220;
cout<<"转换结果为"<cin.get();
cin.get();
return0;
}
编写一个c++程序,它使用3个用户定义的函数(包括main()),并生成下面的输出
Threeblindmice
Threeblindmice
Seehowtheyrun
Seehowtheyrun
编写一个程序,让用户输入其年龄,然后显示该年龄包含多少个月。
如下所示
Enteryourage:
29
#include
usingnamespacestd;
intmain()
{
intage;
cout<<"请输入您的年龄";
cin>>age;
cout<age=age*12;
cout<cin.get();
cin.get();
return0;
}
编写一个程序,其中的main()调用一个用户定义的函数(以摄氏度为参数,并返回相应的华氏度)该程序按下面的格式要求用户输入摄氏度值,并显示结果.
#inc