C++:对象和类|| this指针对象数组类作用域抽象数据类型章末总结

Posted 赵同学的代码时间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++:对象和类|| this指针对象数组类作用域抽象数据类型章末总结相关的知识,希望对你有一定的参考价值。

this指针

在介绍this指针之前,先思考一个问题:

若有两个类a,b;如何去比较a,b某属性的大小并返回引用?

这个问题在OOP特性下就变得很有意思,首先,由于OOP的特性,对于这个属性,必须要有公共接口可以调用,将属性取出;其次,要定义某种方法比较这两个属性,然后return。

eg.top = a.compare(b);//隐式访问a,显式访问btop = b.compare(a);//隐式访问b,显式访问a

理论上以上两种最后都能达到相同的效果,对于compare函数:

const classname & compare(const classname & b) const{//这是一个返回引用的函数,且承诺不修改内容...tmp = b.getinfo();//使用b中信息若在private不能直接访问...if(ture) return b;else return ???;//此处可以发现找不到a的别名啊,直接写a却又会报错}
class classname{...typename info;public:  typename getinfo() const { return info;}//定义一个方法取出信息

为了解决compare函数中出现的问题,C++设置了一个特殊的指针this。


而且,所有数据成员被访问时,如total_val其实都是this->total_val.


注意:  

Ⅰ:所有函数,包括构造与析构,都含有this

Ⅱ:this被const限定,不能用this修改对象的值 

Ⅲ:要返回整个对象,应该使用*this

综上,compare函数中???应该使用*this替代


对象数组

对象和普通的类型一样,可以用线性表的方式定义,定义方法也与普通类型一样:

Classname classname[n] = {  Classname(...),  Classname(...),...};  //定义对象数组及调用构造函数赋初值的方法,不添加则使用默认构造函数


类作用域(简)

啥玩意
作用域
类中定义的名称
整个类
static
所有该类共享

抽象数据类型ADT

ADT在数据结构书中有见过,ADT以通用的方式描述数据类型,没有引入语言或实现细节(伪代码)。类概念非常时候ADT方法进行分析与交流。


类和对象章末总结:


面向对象编程强调的是程序如何表示数据。


*OOP第一步是根据它与程序间的接口来描述数据从而指定如何使用数据,然后设计一个类来实现该接口,一般来说,私有数据存储信息,公有成员函数(方法)提供访问数据的唯一途径,类将数据和方法封装,私有性实现数据隐藏。


*通常,类声明放在头文件中,源代码放在方法文件中,便于将接口描述与细节分开,提高代码的可读性。


*类是用户定义的类型,对象是类的实例。因此,大部分对类型可以使用的操作对类均可使用,包括成员运算符. 间接成员运算符->作用域解析符::。


*在构造对象时,系统会调用构造函数,在对象消亡时,系统会调用析构函数。



*类很适合用于描述ADT,公有成员函数接口提供了ADT描述,私有部分完成实现,于是实现了对类的客户隐藏。

以上是关于C++:对象和类|| this指针对象数组类作用域抽象数据类型章末总结的主要内容,如果未能解决你的问题,请参考以下文章

C++ 类和对象

C++ 类和对象

C++ 类和对象

C++初阶:类和对象(上篇)类的定义 | 类的访问限定符及封装 | 类的作用域 | 类的实例化 | 类对象模型 | this指针

C++ this指针

C++类和对象(类的介绍用法等及this指针)详细解读