![7f6ee5a363e4069b07518f7b1106521b.png](https://i-blog.csdnimg.cn/blog_migrate/0f20723992f1901664696b624fe33b6f.jpeg)
面向过程 是一种 以过程为中心 的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是 封装、继承、多态。 面向对象 的思想对软件开发相当重要,它的概念和应用甚至已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术、人工智能等领域。面向对象是一种 对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。<引用自力扣官方的回答内容>
C++的学习就从和C语言的区别:封装、继承、多态三个方面进行。
C语言是面向过程的语言,C语言中面向过程的直观表现就是一个程序由函数组成。
C++语言是面向对象编程,等会,我好像没对象。
![a78a163cfadba127ea805345641222fb.png](https://i-blog.csdnimg.cn/blog_migrate/639c0f2f400323037c0de1a6ef8df8b0.jpeg)
编个毛,不写了
啊~原来此对象非彼对象。C++中面向对象的直观表现就是,一个Project(项目)由很多class(类)组成。(class本质上就是C语言中的struct,只不过这个class里面除了变量还有函数。)
从问题出发,了解区别:
输入矩形的长和宽,输出矩形的面积和周长。
C语言版:
#include<stdio.h>
float perimeter(float length,float width){
return 2*(length+width);
}
float area(float length,float width){
return width*length;
}
int main(){
float length,width;
scanf("%f%f",&length,&width);
printf("周长:%.1ft面积:%.1f",perimeter(length,width),area(length,width));
return 0;
}
![ead9d1cf869056422d711b1826cab1f4.png](https://i-blog.csdnimg.cn/blog_migrate/486b1656255c212ccb6fd72b09b6fe76.png)
C++版的:
#include<bits/stdc++.h>
class Rectangle{//Rectangle是类的名字 (想想结构体)
public : //下文有解释
float l,w; //成员变量
void Init(int il=0,int iw=0){//成员函数 -初始化长宽
l=il;
w=iw;
}
float getPerimeter(){//成员函数
return 2*(l+w);
}
float getArea(){//成员函数
return l*w;
}
};
using namespace std;
int main(){
Rectangle r;//r叫做Rectangle的一个对象
float l,w;
cin>>l>>w;
r.Init(l,w);//初始化对象里面的l和w,若不初始化,这两个变量里面是随机值。
cout<<"周长:"<<r.getPerimeter()<<"t面积:"<<r.getArea()<<endl;
return 0;
}
![0e22a2707112a1a3ab3ffd2e91e05e8e.png](https://i-blog.csdnimg.cn/blog_migrate/f640680b37920e8f5fe7c4ccb3a51293.png)
C语言写出来的比较散,这代码不是很多所以看不出来,当代码很多时各种函数就会显得很杂乱。而C++写出来的程序有一种封装的效果,也更加符合实际生活中的逻辑。
一个类里面有变量和函数,变量叫做这个类的成员变量,函数叫做这个类的成员函数。成员变量和成员函数统称为类成员。
把Rectangle看成一个数据类型,那由它定义的r就是这个数据类型的一个变量,在C++里面把这个变量称为对象。
成员变量就是这个对象的属性,成员函数就是对象所具有的行为。Rectangle这个类有长宽属性,有计算自己周长和大小的行为。
调用成员函数的几种等效方法(以上面的getPerimeter()函数为例):
- 对象.成员函数 :
r.getPerimeter()
- 指针访问:
Rectangle *p=&r; //先定义一个Rectangle类型的指针指向r p->Init(l,w);
- 引用:
Rectangle &rr=r; rr.Init(l,w);
public 表示类成员的可访问范围:公有的,哪都可以访问。
-private:私有成员,只能在成员函数内访问
-public :公有成员,可以在任何地方访问
-protected:保护成员,涉及继承,碰到了再说
在类的成员函数内,能够访问当前对象的全部属性、函数、同类其它对象的全部属性、函数。缺省这些关键字时默认为private。
函数的缺省参数:
C++中定义函数时可以让 最右边的连续若干个参数 有缺损值,那么调用的时候,若相应的位置不写参数,参数就是缺省值。
void Init(int il=0,int iw=0);
当调用Init()函数时若不给参数,那么l 和 w 两个变量都会初始化为0。
“最右边的连续若干个参数 ”的理解:
r.Init();//可
r.Init(10, );//可
r.Init( ,10);//不行