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语句中,合理使用缩进、一对花括号和空行;
⑤ 适当增加空行和程序注释以增加可读性;
⑥ 太长的程序分为两行或几行,并注意选取合适的分行和缩进位置。