理解类和对象

作者:软件藏品
链接:https://www.zhihu.com/question/27290090/answer/265597272
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

本答案从两个方面回答,一个是通俗易懂的大白话解释,二个是略显专业的角度

Ⅰ大白话

其实类就好比机械加工领域里的经常听到的开模(这个概念确实不知可以百度下,很easy),比如我们想加工一个齿轮,这个模具是标准件,直接和工厂的师傅说一声就可以加工,但对于我们特殊的工件,如果想成批生产的时候,最好是开模做一个这个特殊工件的模具,然后用这个模具就可以成批的加工一个个的工件。

PS:评论区说齿轮不是用模具加工的,机械领域的同学不要太当真,这里只是举一个小小的例子
方便类比清楚这个概念,目前我还没有想到更形象的例子,等我找到后及时修改

回到C++这个问题里,类就好比这个模具,而对象就好比一个个的工件。

大白话的解释只能到这里了,不知道通不通俗?易不易懂? 不行的话,评论区留言我继续想更好的例子

Ⅱ略显专业

对于初学C++的朋友一看到类class的时候,可能都会想:这玩意儿和C的结构体有什么区别么? 这个问题问的好啊,我就来回答下这个问题进而推动题主的理解

下面这个是C的结构体,并不陌生

typedef struct 
{
	int   pos_flg;				
        char  pid_pos; 
        float pid_ang; 	

	pos_ctl_t   pos;
}
route_ctl_t;

这个结构体里可以有各种常规内置类型int char float ,也可以有我们自定义的类型pos_ctl_t,我们可以用这个结构体来定义一个结构体变量route_inf

route_ctl_t route_inf;

但可能写久了的人会想C的结构体里为啥不能写函数呢?于是C++弥补了这个缺憾,并起了个名字叫做类,而用类定义的“变量”也不叫做变量了,而叫做对象

class complex{
private:
	int a;
	int b;

public://构造函数 
	complex(int a = 0, int b = 0) {
		this->a = a;
		this->b = b;
	}

public://重载函数和友元函数 
	friend complex operator +(complex &t1, complex &t2);

	complex operator-(complex &t){
		complex tmp(this->a - t.a, this->b - t.b);
		return tmp;
	}

public://成员函数 
	void comprint() {
		cout<< this->a <<" + " << this->b << "i" <

你可能感兴趣的:(C++学习记录,开发语言,c++)