《C++面向对象程序设计》学习之前言

来源:互联网 发布:单片机和软件编程方式 编辑:程序博客网 时间:2024/05/18 00:36

C++对C的“增强”,表现在两个方面:
(1)在原来面向过程的机制基础上,对C语言的功能做了不少补充。
(2)增加了面向对象的机制。

最简单的C++程序:
#include<iostream>
using namespace std;
int main(){
cout<<"this is a C++ program .\n";
return 0;
}
比较C与C++中程序的不同:
(1)标准C++规定main函数必须声明为int型。程序运行正常为0,不正常返回-1.
(2)注释可以用/*****/,也可以用//....
(3)使用输出流对象cout和"<<"插入运算符,进行输出;使用输入流对象cin和“提取运算符>>”进行输入。
(4)需要包括头文件"iostream"进行cout输出。系统提供的头文件不带.h,自己编制的头文件可以有.h。
(5)使用命名空间 std。

例1.2 求a和b两个数之和

#include<iostream>
using namespace std;
int main(){
int a,b,sum;
cin>>a>>b;
sum=a+b;
cout<<"a+b="<<sum<<endl;
return 0;
}
例 1.3 输入两个数x和y,求两数中的大者。

#include<iostream>
using namespace std;

int main(){
int max(int x,int y);
int a,b,c;
cin>>a>>b;
c=max(a,b);
cout<<"max="<<c<<endl;
return 0;

}

int max(int x,int y){
int z;
if(x>y){
z=x;
}
else z=y;
return z;
}

例 1.4 包含类的C++程序

#include<iostream>
using namespace std;
class Student
{
private :
int num;
int score;
public :
void setdata(){
cin>>num;
cin>>score;
}

void display(){
cout<<"num="<<num<<endl;
cout<<"score="<<score<<endl;
};

 

};
Student stud1,stud2;

int main(){
stud1.setdata();
stud2.setdata();
stud1.display();
stud2.display();
return 0;

}

注释:
1.C++的类中可以包含两种成员,即数据和函数,分别称为数据成员和成员函数。
2.一个类是由一批数据以及对其操作的函数组成的。
3.类可以体现数据的封装性和信息隐蔽。
4.凡是被指定为公用的数据或函数,既可以被本类中的成员函数调用,也可以被类外的语句所调用。被指定为私有的数据或函数
只能被本类中的成员函数所调用,而不能被类以外调用。从而实现信息隐蔽。
5. "."是一个“成员运算符”

例1.5 cin与cout
#include<iostream>
using namespace std;

int main(){
cout<<"please enter your name and age:"<<endl;
char name[10];
int age;
cin>>name;
cin>>age;
cout<<"your name is "<<name<<endl;
cout<<"your age is "<<age <<endl;
return 0;


}
注释:c++为流输入输出提供了格式控制,如:dec(十进制),hex(十六进制),oct(八进制)

用const定义常变量:
C++提供了用const定义常变量的方法,定义后的变量具有变量的属性,有数据类型,占用存储单元,有地址,可以用指针指向它,const
可以与指针结合使用,有指向常变量的指针、常指针、指向常变量的常指针等。

函数原型声明:
在C++中,如果函数调用的位置在函数定义之前,则要求函数调用之前必须对所调用的函数做函数原型声明。
函数类型 函数名(参数表);在编译时只检查函数类型,而不检查参数名。

函数的重载:C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型不相同,这些同名的函数用来实现不同
的功能。
运算符的重载:允许一个运算符用于不同的场合,有不同的含义。

例1.6 求3个数中最大的数(分别考虑整数、实数、长整数的情况)
#include<iostream>
using namespace std;
int max(int a,int b ,int c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
float max(float a,float b,float c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
long max(long a ,long b ,long c){
if(b>a)a=b;
if(c>a) a=c;
return a;
}
int main(){
int a,b,c;
float d,e,f;
long g,h,i;
cin>>a>>b>>c;
cin>>d>>e>>f;
cin>>g>>h>>i;
int m;
m=max(a,b,c);
cout<<"max_i="<<m<<endl;
float n;
n=max(d,e,f);
cout<<"max_f="<<n<<endl;
long int p;
p=max(g,h,i);
cout<<"max_i="<<i<<endl;
return 0;


}

例 1.7 用一个函数求2个整数或3个整数中的最大者。

#include<iostream>
using namespace std;

int max(int a,int b,int c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int max(int a,int b){
if(b>a) return b;
else return a;
}
int main(){
int a=7,b=-4,c=0;
cout<<max(a,b,c)<<endl;
cout<<max(a,b)<<endl;
return 0;
}

函数模板:
所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。

例1.8 将例1.6中的程序改为通过函数模板来实现。

#include<iostream>
using namespace std;
template <typename T>;
T max(T a,T b,T c){
if( b>a) a=b;
if(c>a) a=c;
return a;
}
int main(){
int i1=8,i2=5,i3=6,i;
double d1=56.9,d2=90.765,d3=43.1,d;
long g1=67898,g2=-456,g3=78123,g;
i=max(i1,i2,i3);
d=max(d1,d2,d3);
g=max(g1,g2,g3);
cout<<"i_max="<<i<<endl;
cout<<"f_max="<<f<<endl;
cout<<"g_max="<<g<<endl;
return 0;
}

注释:
通用函数定义 template<typename T >或 template<class T>
函数模板只适用于函数的参数个数相同而类型不同,且函数体相同的情况,如果参数的个数不同,则不能用函数模板。

变量的引用:
一个变量的引用就是给变量起个名字,对变量的引用的所有操作实际上都是对其所代表的变量的操作。“&”是引用
声明符。

“::“作用域运算符

 

原创粉丝点击