对象和类

一、类和对象

类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。

二、类的定义
  1. 声明
class Stock
{
private:
	std:string company;
	long shares;
	double share_val;
	double total_val;
	void set_tot()  { total_val=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();
}

类的成员分为两种:一种是成员数据,另一种是成员函数。
也可以分为私有和公有成员,一般把数据设置为私有,把成员函数设置为公有。因为c++中强调数据的隐藏,把公有的成员函数当做接口供用户使用。私有成员只有成员函数才有权访问

另外定义位于类声明中的函数都将自动成为内联函数,因此Stock::set_tot()是一个内敛函数

  1. 定义
    首先需要在定义文件中包含类声明的头文件,然后定义类中声明的成员函数。定义成员函数时使用作用于解析运算符 :: 来标识函数所属的类另,另外类方法可以访问类的private组件
#includ"stock.h"
void Stock::acquire(const std::string & co,long n,double pr)
{
	company=co;   //因为在类中定义了company 所以可以在成员函数定义的时候直接使用company
	shares=n;
	shar_val=pr;
	set_tot();
}
void buy(long num,double price);
{
......
}
void sell(long num,double price);
{
......
}
void update(double price);
{
.......
}
void show();
{
......
}

内联函数的特殊规则要求在每个使用它们的文件中都对其进行定义。确保内联定义对多文件程序中的所有文件都可用的、最简单的方法是:将内联函数放在类的头文件中。内联函数一般都放在头文件中

  1. 类的使用

使用类的时候需要包含声明类的头文件,并与定义类的文件一起编译。然后通过类创建对象,使用类的成员函数(接口),操作对象。
调用对象的成员函数类似于调用结构的成员函数

#include"stock.h"
int main()
{
	Stock fluffy_the_cat;
	fluffy_the_cat.acquire("NanoSmart",20,12.50);
	fluffy_the_cat.show();
}
三、类的构造函数和析构函数
  1. 构造函数
    就是通过类创建对象的时候自动对对象进行初始化
  • 构造函数的特点:
    (1)名称与类相同。例如,Stock类的构造函数是名为Stock()的成员函数
    (2)构造函数没有声明类型,即没有返回值。

  • 声明和定义构造函数
    在类的声明的头文件中加入成员函数:

Stock(const std::string & co, long n=0,double pr=0)

默认参数的使用当没有对形参n和pr赋值的情况下自动设置为0.

在类的定义文件中对构造函数定义:

Stock(const std::string & co, long n,double pr)
{
	company=co;   
	shares=n;
	shar_val=pr;
	set_tot();
}
  • 使用构造函数
    构造函数的使用方式不同于其他类方法。一般来说,使用对象来调用方法
    stock.show();但是无法使用对象来调用构造函数,因为在构造函数构造出对象之前,对象是不存在的。因此构造函数被用来创建对象,而不能通过对象来调用。

显示地调用构造函数

Stock food=Stock("world",250,1.25);

这种方式调用构造函数可能会产生一个临时的对象,未命名的临时对象赋值给food之后就调用析构函数删除临时对象。

隐式地调用构造函数

Stock food("world",250,1.25);
四、对象数组的初始化

初始化对象数组的方案是:首先使用默认构造函数创建数组元素,然后花括号中的构造函数将创建临时对象,然后将临时对象的内容复制到相应的元素中。因此,要创建类对象数组,则这个类必须有默认构造函数。

const int STKS=10;
Stock stocks[STKS]={
	Stock("NanoSmart",12.5,20),
	Stock(),
	Stock("Monolithic obelisks",130,3.25);
};

stocks[0]和stocks[2]是先通过默认构造函数来创建对象,然后通过构造函数创建临时对象赋值到相应的元素中。stocks[1]是通过默认函数来进行赋值的。

五、总结

 使用面向对象编程思想(OOP)解决问题的第一步是根据它与程序之间的接口来描述数据,从而指定如何使用数据。然后,设计一个类来实现该接口。
 一般来说,私有数据成员存储信息,共有成员函数(又称为方法)提供访问数据的唯一途径。类将数据和方法组合成一个单元,其私有性实现数据隐藏。
 将类声明分成两部分组成,通常将这两部分保存在不同的文件中。

  • 类声明(包括有函数原型表示的方法)应放到头文件中;
  • 定义成员函数的源代码放在方法文件中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值