1. C++的函数和对象

C++对C的"增强"表现在两个方面:

(1) 在原来面向过程的机制基础上,对C语言的功能做了不少扩充。

(2) 增加了面向对象的机制。C++是一种功能强大的混合型的程序设计语言?

1.C语言编写程序,实现将结构体对象的两个域值相加的和乘以2再加50

#include<stdio.h>         /*头文件,标准输入输出库文件*/
int result (int, int);          /*函数声明*/
#define k 2             /* 宏定义*/
struct Point              /*定义结构体*/
{  int x,y;
};
int main ( )               /*主函数*/
{ int z=0, b=50;           /*定义整型变量并初始化*/
 struct Point a;            /*定义结构体变量*/
 printf (" 输入两个整数:");
 scanf("%d%d",&a.x,&a.y);      /*输入结构体变量成员的值*/
 z=(a.x+a.y)*k;          /*计算两个域值相加的和乘以2*/
 z= result(z,b);           /*调用result函数*/
 printf ("计算结果是:");
 printf ("z=%d\n" ,z);          /*输出结果*/
 return 0;
}
int result (int a, int b)         /*定义函数*/
{ return a+b; }

输入两个整数  20,30

计算结果是:150

现使用C++编写面向过程的程序实现上述功能

#include<iostream>          //包含头文件:输入输出流
using namespace std;          //使用命名空间

int result (int, int);         //result函数原型声明
const int k=2;            //定义常量
struct Point             //定义结构Point
{  int x,y;             //定义结构成员x和y
};
int main ( )             //主程序
{ int z(0), b(50);          //初始化整数对象
 Point a;             //定义结构对象a
 cout<<"输入两个整数(以空格区分): "; //输出提示信息
 cin>>a.x>>a.y;          // 接受输入数值
 z=(a.x+a.y)*k;          //计算
 z= result(z,b);           //调用result函数完成计算
 cout<< "计算结果如下 :"<<endl;   //提示信息并换行
 cout<<"(("<<a.x<<"+"<<a.y
   <<")*"<<k<<")+"<<b
   <<"="<<z<<endl;        //输出信息
 return 0;             //主函数的返回值
}
int result (int a, int b)
{ return a+b; }

输入两个整数(以空格区分):20 30
计算结果如下 :(20+30)*2+50=150

C++的基本知识点

1、混合型语言

C++以 .cpp为文件扩展名,有且只有一个名为main的主函数,真正的面向对象语言没有主函数,因保留了这个面向过程的主函数,所以C++被称为混合型语言

2、两种注释方式

"/*"开始,到"*/"结束,如:/* …… */

"//"开始到本行结束,如: //……

3、输入输出对象

标准输入:使用键盘输入。如: cin >> a.x;

标准输出:将信息输出到显示屏上。 如: cout << "we"; cout << endl;

使用标准输入cin及标准输出cout前,要在主函数前使用:

#include <iostream> //包含头文件:输入输出流    
using namespace std; //使用命名空间

在旧的标准制度的时候使用:#include <iostearm.h>
如:
cout<<a.x<<endl<<a.y<<"\n";④换行操作:用语句cout<<endl;或cout<<"\n";实现,其中endl可以插在流的中间。

4、使用命名空间

C++相比C而言,可以省略" .h"标识头文件,但必须使用语句using namespace std;来让命名空间中的对象名称曝光。因此一般的程序都要具有下面的两条语句:

include <iostream> //包含头文件

using namespace std; //使用命名空间

命名空间是将程序库名封装起来的方法,它提高了程序的性能和可靠性。

注意C++库中代替C库中头文件的正确名称,例如下面两个语句效果一样:

include <math.h>

include <cmath>

using namespace std;

5、对象的定义和初始化

C++中利用构造函数语法实现初始化,如:

int b(50); //等同于int b=50;

6、函数原型及其返回值

1)C++使用变量和函数的基本规则都是:先声明,后使用。变量有时也可边声明边使用,但必须声明,否则出错。

函数声明时,除了默认参数(需给出默认参数的默认值)和内联函数(需给出函数体及其内语句)外,不需给出参数的变量名称,如果给出,效果也一样,如:int result (int a,int b); 和int result (int,int);的声明效果一样。

2)除构造函数析构函数外,函数都需要有类型声明。

int main() ,指出main是整数类型,返回值由return后面的表达式决定,且表达式的值必须与声明函数的类型一致。

如果函数确实不需要返回值,还可用void标识,一旦使用void标识,函数体内就不再需要使用return语句,否则会编译出错,但可使用return;语句。

3)C++函数有两类:

① 库函数:也叫标准函数,引用时函数名外加< >;

② 自定义函数:引用时函数名外加" "。

7、const(常量)修饰符及预处理程序

1)const修饰符:用于定义符号常量。

C中一般使用宏定义"#define"定义常量,而C++中除此外,建议使用const代替宏定义,用关键字const修饰的标识符称为符号常量

const是放在语句定义之前的,因此可以进行类型判别,这比用宏定义更安全一些。如下面两个语句是等同的,但是后者可以比前者避免一些很难发现的错误。

difine BUFSIZE 100

const int BUFSIZE 100;

常量定义也可使用构造函数的初始化方法,如:

const int k(2); //等同于const int k=2;

因被const修饰的变量的值在程序中不能被改变,所以在声明符号常量时,必须对符号常量进行初始化,除非这个变量是用extern修饰的外部变量,如:

const int d=8; √ const int d;× extern const int d;√

const的用处不仅是在常量表达式中代替宏定义,如果一个变量在生存期内的值不会改变,就应该用const来修饰这个变量,以提高程序安全性。

2)预处理程序

① C++的预处理程序不是C++编译程序的一部分,它负责在编译程序的其他部分之前分析处理预处理语句。

② 所有预处理语句都以位于行首的符号"#"开始,作用是把所有出现的、被定义的名字全部替换成对应的"字符序列"。

③ 预处理语句有三种:宏定义、文件包含(也称嵌入指令)和条件编译。

④ 文件包含是指一个程序把另一个指定文件的内容包含进来,文件包含有两类:引用自己定义的包含文件和引用系统提供的包含文件。

如:引用系统提供的输入输出流文件

include <iostream> //包含系统头文件,一般用<>括起来

using namespace std; //使用命名空间

如:引用自己定义的包含文件

include "E:\prog\myfile.h"//包含自定义头文件,一般用" "括起来

8、程序书写格式

C++的格式和C一样,都很自由,一行可以写几条语句,但也要注意以下规则,增加可读性:

① 括号紧跟函数名后面,但在for和while后面,应用一个空格与左括号隔开;

② 数学运算符左右各留一个空格,以与表达式区别;

③ 在表示参数时,逗号后面留一个空格;

④ for、do…while和while语句中,合理使用缩进、一对花括号和空行;

⑤ 适当增加空行和程序注释以增加可读性;

⑥ 太长的程序分为两行或几行,并注意选取合适的分行和缩进位置。

 

posted @ 2020-10-11 10:04  我真的看不懂  阅读(382)  评论(0编辑  收藏  举报