如何理解类和对象
在学习C++语言时,会有类和对象这样的概念,哪样如何去用,去理解呢?
类是 C++ 的核心特性,通常被称为用户定义的类型。
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。
类中的数据和方法称为类的成员。
在学习C++语言时,会有类和对象这样的概念,哪样如何去用,去理解呢?
深拷贝与浅拷贝这两类拷贝在计算机中是经常出现的,但还是有很多人不是很明白,下面将用比较白话来讲,估计都会明白。
定义成抽象类接口后优点:
1.代码具有非常好的扩展性,如果再加个hexagon类也很好处理,实现BaseGraphics定义的各个接口就好了
2.有助于多人协同开发,开发接口的不同关心如何实现接口,实现接口不用想太多,按要求一个个实现就好。
3.好的维护性,比如要修改Circle类里实现,只要改Circle部份,不用动到 其它代码。
虚函数主要作用就为了,通过基类指针访问派生类定义的函数。通过继承和虚函数实现面向对象的多态性。
在编程时会经常性的发生名字隐藏,比如类继承时发生名字隐藏。当基类中定义一个变量wheelNum,派生类也定义一个wheelNum变量,这时就发生了名字隐藏。下段代码来说明类继承时名字隐藏:
类构造就是开始使用时定义,类就开始构造;析构就是对象不在使用时调用。对象构造时调用构造函数,对象析构时调用析构函数。那派生类构造时基类构造吗?顺序是怎样?派生类析构时基类析构吗?顺序是怎样?带这这两个问题写段代码来说明下。
面向对象语言都有类,也都有继承,继承可以很大程度上减少代码量,而让代码逻辑更清晰。继承可以使得子类(派生类)具有父类(基类)的属性和方法或者重新定义、追加属性和方法等。比如车是基类,娇车和公交车从车类派生而来,这就是一个继承的例子。
继承后派生类在内存如何存放基类成员:
C++11之前类成员初始化,都是通过构造函数,现在C++11可以直接在类成员定义时初始化,像java一样。接下来看一段代码来体会下类成员初始化。
类成员初始化代码例:
C++11新增类成员初始化方式:
C++11新增类成员初始化与构造函数:
C++中将操作符进行重新定义,就是操作符重载。
C++中有方式的操作符重载:
1.类中操作符重载
2.全局操作符重载
友元关键字是friend,也就是朋友的意思。是不是友元必须另一个类中声明,函数或类自己说是别人的友元。为什么要友元friend?有时在写代码时,类外要访问私有成员,这种情况下就只能声明成友元,不然无法防问类内私有成员。C++支持两种友元:友元函数、友元类。