C++PrimerPlus 学习笔记 | 第十章 类和对象|1 过程性编程和面对对象编程 & 2 抽象和类

抽象和类

类型是什么

内置类型指定3件事情

  1. 决定数据对象需要的内存数量
  2. 决定如何解释内存中的位,long和float数据位数相同,但是转换为数据的方法却不一样。
  3. 决定可使用数据对象执行的操作和方法

内置类型有关操作的信息被内置到编译器中来,但是C++中定义用户自定义的类型的时候,必须自己提供这些信息。

C++的类

类是一种将抽象转换为用户自定义类型的C++工具,他将数据表示和操纵数据的方法组合成一个整洁的包

如何定义类,一般来说类规范由两个部分组成:

  1. 类声明:以数据成员的方式描述数据部分,以成员函数(也被称为方法)的方式描述公有接口。
  2. 类方法定义:描述如何实现类成员函数

简单来说类声明提供了蓝图而方法定义了提供了细节


什么是接口

接口 参考链接 From Wiki

https://zh.wikipedia.org/wiki/接口

接口是一个共享框架,共两个系统交互时使用。

对于类来说,我们说公共接口,在这里公众是使用类的程序,交互系统由类对象组成,而接口由编写类的人提供的方法构成。接口能让程序员编写与类对象交互的代码,从而能让程序使用类对象。如果希望更人性化,不要讲使用的类的程序视为公共用户而将编写程序的人视为公共用户,然而要使用某个类必须要了解其公共接口,要编写类,必须创建公共接口。


为开发一个类和编写使用的类的程序通常需要多个步骤,首先C++程序员将接口(类定义)放在头文件中,然后并将实现(类方法的代码)放在源代码文件中。而且通常类的名称的首字母大写。

class Animal {
    private:
    string name;
    string belong;
    public:
    void vsetname(const string& name);
    const string& name();
    void setbelong(const string& belong);
    const string& belong();
}

C++ 关键词class指出这些代码定义了一个类设计(不同于模版参数此处的class和typename完全不同),如此声明了stock为新的类型名,接下来可以在花括号中描述数据成员和成员函数,成员函数可以就地出现,也可以仅描述其原型。但对于描述函数接口而言原型就够了,将数据和方法组合成一单元是类最吸引的人地方

访问控制

关键词 p r i v a t e private private p u b l i c public public也是新的,它们描述了对类成员的访问控制,使用类对象的程序都可以直接访问公有部分,但只能通过共有函数成员函数(或者友元函数,之后关于访问控制不再复述友元函数,将在后面章节详细描述),来访问的类的私有成员,因此公有成员函数是程序和对象的私有成员之间的桥梁,提供了对象和程序之间的接口防止程序直接访问数据被称为数据隐藏,C++还提供了 p r o t e c t e d protected protected访问控制符,将在讲到继承的时候提及

类设计尽可能将公有接口和实现细节分开,公有接口表示设计的抽象组件.将实现细节放在一起并将它们与抽象分开叫做封装.数据隐藏(将数据放在类的私有部分)是一种封装。将实现的细节隐藏在私有部分中也是一种封装,将类声明和类成员函数定义分开也是封装。


OOP与C++

OOP是一种编程风格,从某种角度来说,他用于如何一种编程语言中,然而C++中包含了许多专门用来实现OOP的特性,他使得程序员更近一步,首先将数据表示和函数原型放在一个类声明中,而不是放在一个文件中,,其次让数据表示为私有,使得数据只能被授权的函数访问。


数据隐藏不仅可以防止直接访问数据,还让开发者类的使用者不用了解数据是如何被表示的,需要知道成员函数接受什么样的参数以及返回什么样的值,原则是将实现细节从接口设计中分离出来,如果以后找到了更好的实现数据表示或成员函数的方法,可以对这些细节进行修改,而无需修改程序接口,这使得程序维护更加容易。

控制对成员的访问,公有还是私有

无论是类成员还是成员函数,都可以在类的公有部分或者私有部分中声明它,但由于隐藏数据是OOP主要目标,因此数据项通常放在私有部分,组成类的接口的成员函数放在公有部分,否则用户将无法调用这些函数。但是也可以将一些成员函数放在私有部分,不能直接从程序调用但是公有成员函数却可以使用它们。程序员通常使用私有成员函数来处理不属于公有接口实现的细节

如果前面没有任何访问控制符,类默认访问控制为私有。


类和结构

类描述很像包含成员函数以及 p u b l i c public public p r i v a t e private private的可见性标签的结构声明,实际上C++对结构进行拓展了,现在结构与类的唯一区别,结构的默认访问控制是公有而类是私有。

C++通常使用类来实现的类的特性,而使用结构来表示存粹的数据对象,即不包含成员对象(POD)。**


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值