从 面向过程 到 面向对象
- 从C到C++
第一代:机器语言——用0,1写代码
第二代:汇编语言——用助记符写代码
第三代:高级语言——面向过程,用表达式和格式化命令符写代码 C,
(Java,C++有非过程化倾向)
第四代:非过程化语言——用结构化命令和可视化操作编写软件
- 增加了功能强大的输入输出方法——cin与cout
使用cin输入不用过多考虑数据的类型
#include<iostream>
using namespace std; //“std”命名空间,主函数前说明,后可直接使用cin,cout
//也可在每次使用时对cout 说明,std::cout<<”Hello World”;
int main()
{
int a;
double b;
cin>>a>>b; // <<,>>是overload运算符,可以处理不同类型输入值
cout<<a<<endl; // endl 头文件iostream中定义,存于命名空间std中
cout<<b<<endl; //endl 相对于\n来说,可刷新“缓冲区数据流?”
return 0;
}
printf可以把格式化输出和输出内容放入一条命令中写
用cin输入printf输出较为便捷
关于C与C++的输出对比
#include<iostream>
int main()
{
double a;
a = 5/3.0;
printf("a=%.1f\na=%.2f\na=%.3f",a,a,a);
return 0;
}
#include<iostream>
#include<iomanip> //格式化输出
using namespace std;
int main()
{
double a;
a = 5/3.0;
cout<<fixed; //以普通方式输出,固定点方式显示,setprecision确定小数点后精度
cout<<"a1="<<setprecision(1)<<a<<endl; //precision精确度
cout<<"a2="<<setprecision(2)<<a<<endl;
cout<<"a3="<<setprecision(3)<<a<<endl;
}
2. 引用
引用是不带星号的指针
void swap(int *a,int *b) //两个指针(地址)
{
int c;
c=*a;
*a=*b;
*b=c;
}
int main()
{
int x=3,y=5;
swap(&x,&y);
……
void swap(int &a,int &b) //此处“&”为引用符号
{
int c;
c=a;
a=b;
b=c;
}
int mian()
{
int x=3,y=5;
swap(x,y);
……
- 申请内存空间——常有类型的类型分配
int n,*q;
cin>>n;
申请含n个元素的int型数组,令q指向其0号元素
标准C
//mallloc的内存分配用法
q=(int*)malloc(sizeof(int)*n)
高版本C++
int n;
cin>>n;
int q[n];
C++
//new的内存分配用法
q=new int[n];
- 常变量
常量与变量的结合体——常变量
常量区分类型吗?
——常量有类型,以后缀表示,比如3.0f是float类型
初值类型与变量类型不同,编译不报错
设置常量——定义变量带初值,并规定后续代码不得修改
#include<iostream>
using namespace std;
#define PI 3.1415926
//const double PI=3.1415926 加const——常变量
int main()
{
double r,s;
cin>>r;
s=PI*r*r;
cout<<s<<endl;
}
- 面向对象的三个基本特征
封装
继承
多态
- 封装
对象和类概念的主要特征。
把部件组合到一起并包裹起来。 - 继承
实现继承、接口继承、可视继承
在已有的东西基础上修修补补 - 多态
实现多态的两种方式——重载和覆盖
同一个功能要应对各种情况