C++类与对象初识 2022-02-03 04:13 374阅读 0赞 ***引入***:在我们编程语言中,想必大家都应该听说过面向过程编程与面向对象编程,那么到底什么是面向过程编程什么是面向对象编程呢?对于这个问题我想大家都应该听我们的老师讲过一个生动而又形象的例子,下面我以这个例子为大家具体的讲解释一下这两者的区别。 **如何将大象装进冰箱?** ## 面向过程(POP) ## 对于面向过程而言,就是分步骤去解决问题,如下 1. 打开冰箱门 2. 把大象放进冰箱 3. 关闭冰箱门 你没看错,就是这么简单。面向过程强调的就是分步骤去解决问题,一步一步的将我们的功能实现,代表语言就是我们的C语言。具体对应于我们的语言中就是写一个一个的函数,然后依次调用函数去实现功能。 ## 面向对象(OOP) ## 对于面向对象而言,它注重的并不是解决问题的步骤,而是将这个问题看成一系列对象的交互,利用对象与对象之间的交互去解决实际问题(什么是对象,不妨继续往下看看),面向对象编程是如何解决这个问题呢? 如下: 1. 冰箱打开 2. 冰箱存储 3. 冰箱关闭 这就是面向对象的思想去解决问题,设计对象,利用对象之间的交互行为去解决问题。代表语言有C++,java,C\# 等。 ## 面向过程与面向对象的区别 ## **面向过程** 1. 优点:面向过程编程性能比面向对象高,对于面向对象而言,要设计类并且实例化对象,开销比较大,耗费空间大。比如我们常用的单片机,嵌入式开发,Linux/Unix 一般采用面向过程编程,对性能要求比较高。 2. 缺点:不易维护,不易扩展,不易复用。 **面向对象** 1. 优点:可维护性高、可复用性高,可扩展性高。 2. 缺点:性能相对于面向过程而言比较低。 了解了什么是面向过程与面向对象编程,那么接下来就让我们看看我们C++中的类与对象。 ## 类与对象 ## **基本概念**:一个类是用来抽象一批对象的,类是一个抽象的概念,描述事物的共性(属性和数据)。在面向对象编程中,类的具体实例就叫做对象。举个简单的例子,类就像我们盖楼房的图纸一样,虽然图纸上面画了建筑的样式,但实际并没有开辟空间。而对象就是我们根据图纸具体实现建造出来的建筑物,它占有一定的空间。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTAzMzE1_size_16_color_FFFFFF_t_70] 下面让我们来看看如何定义一个类,在C++中我们有两种定义类的方式,一种是声明和定义全放在类体中,另一种是声明和定义分离。 1. 类的定义 //声明和定义全放在类体中 class Person{ public: //成员方法 void eat(){ cout<<"eat food"<<endl; } private: //成员属性 int age; string name; }; //此处的分号一定要记住 //声明和定义分离 //**在.h中声明** class Person{ public: //成员方法 void eat(); private: //成员属性 int age; string name; }; //此处的分号一定要记住 //在.cpp中实现 void Person::eat(){ //此处的书写格式一定要看清楚 cout<<" eat food"<<endl; } 1. 实例化对象 int main(void){ Person person1 ; //类的实例化,生成一个Person对象,占有实际空间。 return 0; } 解释:**class**为定义类的关键字,**Person**为类的名字,\{\}中为类的主体,注意类定义结束时后面分号。因为我们很容易就漏写了。类中的元素称为类的成员:类中的数据称为类的属性或者**成员变量**; 类中的函数称为类的方法或者**成员函数**。定义类也可用 **struct**关键字。如下: struct ClassName{ //类体 }; 在这里我相信有人会问 struct 不是我们定义结构体的关键字吗?它也可以定义类吗?在这里我要给大家解释一下,C++中的结构体对C语言中的结构体进行了升级,在C语言中,我们的结构体中不能定义方法,但是在C++中可以。那么在C++中 class 关键字和 struct 关键字定义的类有区别吗? 这个我也得告诉大家,他们只有一个区别:**用struct关键字定义的类默认的访问权限是公有的(public),而用class关键字定义的类的默认访问权限是私有的(private)**,它们仅有这一个区别,所以你用哪个定义类都可以,但是我们习惯上用class关键字。 **类的访问控制权限** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTAzMzE1_size_16_color_FFFFFF_t_70 1] C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。 **【访问限定符说明】** 1. public修饰的成员在类外可以直接被访问 2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的) 3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止 4. class的默认访问权限为private,struct为public(因为struct要兼容C) **注意**:访问限定符只在编译时有用,当数据映射到内存后,没有任何访问限定符上的区别 **类的作用域** 类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符指明成员属于哪个类域。 class Person{ public: //成员方法 void eat(); private: //成员属性 int age; string name; }; //此处的分号一定要记住 //这里需要指定eat()方法是属于Person这个类域下的 void Person::eat(){ cout<<" eat food"<<endl; } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTAzMzE1_size_16_color_FFFFFF_t_70]: /images/20220203/48ecdcc63bd14493a6d72f5bfb559c0d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTAzMzE1_size_16_color_FFFFFF_t_70 1]: /images/20220203/9d0428539ebb4fce8bacc48518d29bd5.png
相关 初识类和对象 python中一切皆为对象,类型的本质就是类。 类的相关知识 def functionName(args): '函文档字符串' ''' class类名 灰太狼/ 2021年12月24日 10:19/ 0 赞/ 259 阅读
相关 C++类与对象初识 引入:在我们编程语言中,想必大家都应该听说过面向过程编程与面向对象编程,那么到底什么是面向过程编程什么是面向对象编程呢?对于这个问题我想大家都应该听我们的老师讲过一个生动而又形 青旅半醒/ 2022年02月03日 04:13/ 0 赞/ 375 阅读
相关 初识Java(Java类和对象-对象) 一、对象 Java 是一门面向对象的程序设计语言,对象时由类抽象出来的,所有的问题都通过对象来处理,对象可以操作类的属性和方法解决相应的问题,所以了解对象的产生、操作和消 亦凉/ 2022年05月25日 23:48/ 0 赞/ 286 阅读
相关 初识Java(Java类和对象-类) 一、类 类是封装对象的属性和行为的载体,而在 Java 语言中对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在。 1.1 成员变量 在 Java 向右看齐/ 2022年05月27日 08:58/ 0 赞/ 241 阅读
相关 【C++】C++类的学习(一)——初识类 【[fishing-pan][]:[https://blog.csdn.net/u013921430][https_blog.csdn.net_u013921430] 电玩女神/ 2022年05月29日 12:54/ 0 赞/ 99 阅读
相关 初识c++ 这几天一直在写网络编程,感觉有点枯燥,今天在看了半个小时的网络后,开始看c++。因为学过c的缘故,c++上手的时候感觉不怎么难,比较容易理解,前面几章看的比较快,在看到构造 小鱼儿/ 2022年07月13日 10:45/ 0 赞/ 116 阅读
相关 初识c++的类 前言 c++所做的最重要的改进就是提供了类。类就体现了c++面向对象编程([OOP][])的特性,类是一种将抽象转换为用户定义类型的c++工具,它将数据表示和操纵数据的方法 古城微笑少年丶/ 2022年07月18日 05:28/ 0 赞/ 112 阅读
相关 初识C# 刚刚接触c\,有很多知识点觉得很熟悉,又有很多名词从来没听过,整的满头雾水,所以先理清思路再继续学习。 首先c\是一门编程语言,它是面向对象的、运行于.net fro 喜欢ヅ旅行/ 2022年08月25日 08:52/ 0 赞/ 95 阅读
相关 初识C++模板(函数、类模板) 文章目录 一、泛型编程 二、函数模板 1.函数模板的概念 2.函数模板格式 3.函数模板原理 4.函数模 我就是我/ 2022年12月15日 11:17/ 0 赞/ 53 阅读
相关 C++ 初识 C++ 初识 1.1 变量 作用:给一段指定的内存空间起名字,方便操作这段内存 在内存中存放的数据有一个十六进制的地址编号 可以通过地址编号来找到数据,但是这 矫情吗;*/ 2022年12月18日 02:54/ 0 赞/ 92 阅读
还没有评论,来说两句吧...