C++类的使用

类:
在C++中类是将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。
下面以股票类来进行讲解:
定义一个股票类需要存储以下信息:

  • 公司的名称;
  • 所持股票的数量;
  • 每股的价格;
  • 股票的总值;
    接下来定义股票类,一般来说,一个完整的类包含以下两个部分:
  • 类声明:以数据成员的方式描述数据部分,以成员函数(方法)的方式描述公有的接口;
  • 类方法的定义:描述如何实现类成员函数;
    简单来说,类的声明提供了类的蓝图,而方法定义则提供了细节。
    类中的接口:
    在类中,所说的公共接口,是使用类的程序,交互系统由类对象组成,而接口由编写类的人提供的方法组成。接口让程序员能够编写与类交互的代码,从而让程序能够使用类的对象。例如,要计算string对象中包含多少个字符串时,无需打开对象只需要使用方法size()就可以计算string对象的长度。类设计禁止公共用户直接访问类,但可以使用方法size().方法就是用户和类对象之间的公共接口的组成部分。
    C++程序将接口放置在头文件中,将实现部分放置在源文件中,这是定义类非常典型的方法。为了更好的区分类,通常将类名的首字母大写,但这是常用而不通用的方法。
    程序清单:stock00.h
#ifndef STOCK00_H_
#define STOCK00_H_
#include<string>
class Stock
{
    
    
private:
	std::string company;
	long shares;
	double share_val;
	double total_val;
	void set_tot()
	{
    
    
		total_val = shares *shares*share_val;
	}
public:
	void acquire(const std::string& co,long n,double pr);
	void buy(long num,double price);
	void sell(long num,double price);
	void update(double price);
	void show();
};
#endif

在头文件中,函数的实现在源文件中,但对于描述函数的接口而言,函数的原型就足够了。将数据和方法组合成一个单元是类最吸引人的地方。
类中访问控制:
使用类的对象的程序都可以直接访问共有部分,但只能通过公有的成员函数或者是友元函数来访问对象的私有成员。例如在上述类中要修改类中的shares成员,则只能通过类中公有的成员函数进行修改。所以说类中公有成员函数是和对象私有成员之间的桥梁,提供了对象和程序之间的接口,防止程序直接访问数据被称作是数据隐藏。在C++中还提供了控制关键字protected.
在类的设计中,尽可能的将公有接口与实现细节分开,公有接口表示设计的抽象组件,将实现细节放在一起并将他们与抽象分开被称作是封装。数据隐藏也是一种封装方式,将实现的部分隐藏在私有部分中,也是一种封装。封装的另一个例子是将类函数定义和类声明放在不同的文件中。
数据隐藏不仅可以防止直接访问数据,还让开发者无需了解数据是如何表示的,所需要知道的只是各个成员函数的功能和区别。
控制对成员的访问:公有还是私有
无论类成员是数据还是成员函数,都可以在类的公有部分或者是私有部分中声明他们。数据通常放在私有部分中,组成类接口的成员函数通常放置在共有部分中。通常程序通过使用私有成员函数来处理不属于公有接口的实现细节。在类中可以不使用关键字private,这是类中对象默认的访问控制形式。
C++中类和结构看上去很像,实际上类就是结构的扩展,他们具有相同的结构声明,唯一区别是,结构提中默认的访问类型是public型,而类是private.在程序中通常使用类来实现类描述,使用结构体表示纯粹的数据对象。
实现类成员函数:

  • C++中定义成员函数,需要使用作用域运算符(::)来标识函数所属的类,
  • 类方法可以访问类的private组件。
  • 作用域解析运算符确定了方法定义对应的类的身份。
  • 方法的第二个特点是:方法可以访问类的私有成员。
    将函数的实现放置在一个单独实现的文件中,需要添加相应的头文件,能够让编译器访问类的定义。
    成员函数的说明:
    定义位于类声明中的函数将自动称为内联函数。类声明通常将短小的成员函数作为内联函数。
    创建对象:
    使用类创建的每个新对象都有自己的存储空间用于存储其内部变量和类成员。即同一个类所有对象共享同一组类方法,即每种方法只有一个副本,他们占据不同的内存块,但执行的是同一个代码块,只是将代码块用于不同的数据。在OOP中,调用成员函数被称为发送消息,因此将同样的消息发送给两个不同的对象将调用同一个方法,但该方法被用于两个不同的对象。
    使用类:
    要创建类的对象,可以声明类变量,也可以使用new为类对象分配存储空间。

Guess you like

Origin blog.csdn.net/weixin_42105843/article/details/118616461