(面试)谈谈我对C++面向对象特性的理解

博客内容:C++读取一行内个数不定的整数的方式

作  者:陈大大陈

个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信!

欢迎大家:这里是CSDN,我总结知识和写笔记的地方,喜欢的话请三连,有问题请私信

 

目录

对象是什么?

C语言和C++区别

CVSC++

什么是object-oriented


对象是什么?

什么是对象,对象就是一个东西,那什么是东西呢?

对象可以是可见的,也能是不可见的,他可以是一句话,也可以是一个杯子。

在程序设计里,变量就是对象。变量有类型,决定了变量里面存什么,对象一样有类型。

不同的对象有不同的特性,里面有一些数据时被保护起来的,外面是一些操作。

我们可以通过这些操作或者说是服务来访问数据,却不能直接访问受保护的数据。

(面试)谈谈我对C++面向对象特性的理解_第1张图片

两者的关系如图所示。

面向过程和面向对象的区别在于 如何去描述,描述什么。

C语言和C++区别

比如有一个人去菜市场买菜,如果用C语言来描述,就是按照时间顺序来描述事情发生的过程,买家张三买了一捆白菜,然后店主李四帮他称菜等等。

如果用C++来描述的话,就是描述事件中的对象,店主李四的吆喝传到张三的耳朵里,张三听到声音,他可能去买菜,也可能不去,这取决于白菜的价钱,说到白菜,又有了白菜的日期,产地,大小等等信息,C++就是描述对象以及对象间的关系。

从程序设计的角度来看的话,如果要设计一个打印三个整形的程序。

C语言来写的话是这样:

#define _CRT_SECURE_NO_WARNINGS
#include
typedef struct print3d
{
	int x;
	int y;
	int z;
}Print3d;
void print3d_print(const Print3d* pd)
{
	printf("%d %d %d\n", pd->x, pd->y, pd->z);
}
Print3d a;

int main()
{
	a.x = 1, a.y = 2, a.z = 3;
	print3d_print(&a);
	return 0;
}

C++来写的话则是这样:

#define _CRT_SECURE_NO_WARNINGS
#include
using namespace std;
class print3d
{
public:
	print3d(int a=1, int b=2, int c=3)
		:_a(a)
		,_b(b)
		,_c(c)
	{

	}
	void print()
	{
		cout << _a<<' ' << _b <<' ' << _c << endl;
	}
	
private:
	int _a;
	int _b;
	int _c;
};
int main()
{
	print3d().print();
}

在C++的代码里,print3d()是一个匿名对象,我们要它来执行print这个操作。

CVSC++

我们看到,C语言的struct里面,只有数据

而C++的class里面,既有数据,也有操作。

C语言的代码,操作在结构体外面,所以要执行打印操作,需要传结构体的指针进去。

C++的代码,操作在结构体内部,所以当你要它做什么操作,对象自己就会操作,而不需要像C语言一样将对象的地址传到函数里面去。

什么是object-oriented

总的来说,面向对象是一种方法,这种方法是用来组织设计和实现的。

组织设计就是找到解决问题的思路。

实现就是把代码写出来。

面向对象关键的核心在于,对象是组织和实现主要关注的东西,而不是过程。

你可能感兴趣的:(C语言初阶以及进阶内容专栏,算法竞赛,数据结构笔记,c++,开发语言,c语言,算法,数据结构)