C++-Record01—C++与C语言的区别

一直以来对C和C++的区别抱有较大的疑惑的,这次进行总结。

一般而言,都指定C语言是面向过程的,而C++语言是面向对象的,再有的,就是C++比C高级一点,C相对于C++更偏向于底层。但再往深纠,到底什么是面向过程,什么是面向对象,就糊涂了。这次就进行一次区别。

如下,使用C/C++两个版本的编写来实现求一个圆的面积的功能的代码,通过比对来看出这两种语言的区别:

首先,是C语言版本:

#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

void main()
{
	double	r = 0;
	double	s = 0;

	cout<<"请输入圆形的半径:";

	//cin 标准输入 代表键盘
	cin >> r;
	cout<<"r的值是:" << r <<endl;
	s = 3.14*r*r;
	cout<<"圆形的面积是s:" <<s << endl;
	system("pause");
}

如上,就是一个非常简单的,通过C语言来实现求取一个圆的面积的过程,可以看出,整个代码编写的顺序非常的流畅,从上到下,代码的逻辑顺序和代码的编写顺序也是完全吻合的。

再看C++版本的编写:

#include "iostream" //包含c++的头文件 //iostream.h

using namespace std; //使用命名空间 std 标准的命名空间 (在这个命名空间中定义了很多标准定义)

//在C++中 定义了一个自定义数据类型 MyCicle 圆形
class MyCicle
{
public:  
	double	m_s; //圆的面积 属性 成员变量
	double	m_r; //圆的半径

public:
	void setR(double r) //成员函数
	{
		m_r = r;
	}

	double getR() //成员函数
	{
		return m_r;
	}
	double getS()
	{
		m_s = 3.14*m_r*m_r;
		return m_s;
	}
};

void main()
{
	MyCicle		c1, c2, c3; //用类 定义 变量 对象
	double		r;
	cout << "请输入c1圆形的半径:";
	cin >> r;

	//给c1圆形的属性赋值
	c1.setR(r);

	cout << "c1圆形的面积是:" << c1.getS()<<endl;

	system("pause");
}

经过对比可以发现,C++版本编写的代码,定义了一个类,然后,又在类中加入了变量,成员函数等内容,那么,就可以引出结论了:

用面向对象的方法做编程,第一步是做抽象(面向对象就是将现实生活中的人事物进行抽象),以求圆的面积为例进行说明,我要求一个圆的面积,那么,就需要先定义一个圆,这么一个类,然后,再从这个类型中衍生出多个对象,进行定义。

C++中,定义了一个类,可以再类里面写函数,这一点是和C语言不一样的!

面向过程是一步一步的,面向对象是不停的去修改所定义的类不是一步一步的按顺序去执行的。 

面向过程加工的是一个一个的函数,面向对象加工的是一个一个的类

类是一个数据类型,是固定大小的内存块的别名,但是,定义一个类,这是一个抽象的概念,不会给你分配内存,而只有当数据类型中定义变量的时候,才会进行分配内存。(后期详补)

抛砖:

c++编译器如何区分是c1对象还是c2对象调用类的方法呢?

class类是一个数据类型和对象是1对n的关系。

学习c++的方法是和面向过程是不一样的。 

总体代码

dm01_hello.cpp


/*

#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

void main()
{
	printf("hello...\n");
	system("pause");
	return ;
}
*/

#include "iostream" //包含c++的头文件 //iostream.h

using namespace std; //使用命名空间 std 标准的命名空间 (在这个命名空间中定义了很多标准定义)

void main01()
{
	//printf("hello....\n");

	//cout 标准输出 黑屏幕, 
	//<< 左移操作符  在c++里面 功能的改造(增强)===>C++ 语言操作符重载  //3day
	//endl \n
	//打印到屏幕 并且换行
	cout << "hello...."<<endl;

	system("pause");
}

//求圆的面积
//用面向过程的方法求解圆形的面积
// << >> 不会用: 标准输入cin和标准输出cout 始终写在操作符的左边 
void main02()
{
	double	r = 0;
	double	s = 0;

	cout<<"请输入圆形的半径:";

	//cin 标准输入 代表键盘
	cin >> r;
	cout<<"r的值是:" << r <<endl;
	s = 3.14*r*r;
	cout<<"圆形的面积是s:" <<s << endl;
	system("pause");
}

//在C++中 定义了一个自定义数据类型
struct Circle01
{
	double	m_s; //圆的面积
	double	m_r; //圆的半径
};

//在C++中 定义了一个自定义数据类型 MyCicle 圆形
class MyCicle
{
public:  
	double	m_s; //圆的面积 属性 成员变量
	double	m_r; //圆的半径

public:
	void setR(double r) //成员函数
	{
		m_r = r;
	}

	double getR() //成员函数
	{
		return m_r;
	}
	double getS()
	{
		m_s = 3.14*m_r*m_r;
		return m_s;
	}
};

//

void main03()
{
	MyCicle		c1, c2, c3; //用类 定义 变量 对象
	double		r;
	cout << "请输入c1圆形的半径:";
	cin >> r;

	//给c1圆形的属性赋值
	c1.setR(r);

	cout << "c1圆形的面积是:" << c1.getS()<<endl;

	system("pause");
}

//用面向对象的方法
//1 类的抽象 成员变量和成员函数 
//2 实例化 类的对象
//3 求面积
	//面向过程加工的是 一个一个的函数 
	//面向对象加工的是:一个一个的类
//4 main集成测试

//思考1:类的调用 执行过程分析==>类代码不是一步一步指向
//类是一个数据类型,(固定大小内存块的别名); 定义一个类,是一个抽象的概念,不会给你分配内存
//用数据类型定义变量的时候,才会分配内存
//思考2:抛砖: c++编译器是如何处理 多个对象,调用类的成员函数的;具体一点:如何区分是c1 c2 c3 调用了getS,抛砖.....

void main04()
{
	MyCicle		c1, c2, c3; //用类 定义 变量 对象
	double		r1, r2, r3;
	
	//圆形1
	cout << "请输入c1圆形的半径r1:";
	cin >> r1;
	//给c1圆形的属性赋值
	c1.setR(r1);
	cout << "c1圆形的面积是:" << c1.getS()<<endl;


	//圆形2
	cout << "请输入c2圆形的半径r2:";
	cin >> r2;
	//给c1圆形的属性赋值
	c2.setR(r2);
	cout << "c2圆形的面积是:" << c2.getS()<<endl;

	system("pause");
}






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值