首页 > 代码库 > c/c++ -->对象和类

c/c++ -->对象和类

1、类基础

 1.1 基本概念

类是由数据结构和方法组成的,方法就是对数据结构进行处理。

类由.h文件和.cpp文件组成,.h文件中表明该类的基本接口,.cpp文件实现具体的方法。

通过类可以创建具体的对象,通过对象来调用方法。

 

比如:求正方形的面积。

其中,"正方形"就是一个类,正方形的边长"a"就是数据,面积"S = a * a"就是方法。

而"正方形A的边长为5mm"就是代表一个对象的数据为多少,调用方法即可求出面积为25mm2

1.2 一个类的基本组成部分

#ifndef  __HEAD_H__
#define __HEAD_H__

//使用class关键字,"Stock"为类名,一般来说类名首字母大写
class Stock
{
//"private"标识私有类成员,外部不可访问,达到数据隐藏的目的
private:
    long val;
    void set_num();
//"public"标识公共类成员,外部可访问
public:
//构造函数,新建对象时默认调用
    Stock();
//析构函数,释放对象时默认调用
    ~Stock();
    void show();
};

#endif

 

 

类虽然是数据隐藏,但还是将内部数据也一并写在了类结构里。这是因为每新建对象时,都会新建私有数据,各个对象使用各自的数据,共用公共的方法

实现类成员函数如下所示:

//head.cpp
#include "head.h"

//使用"函数返回 类名::函数名()"的方式实现一般函数
void Stock::show()
{

}
void Stock::set_num()
{

}
//使用"类名::类名()"的方式实现构造函数
Stock::Stock()
{
    val = 0;
}
//使用"类名::~类名()"的方式实现析构函数
Stock::~Stock()
{
    
}

 

 

类的使用如下所示:

//use.cpp
#include "head.h"

int main()
{
    Stock use_class;

    use_class.show();

  return 0;  
}

 

1.3需要注意的几点

1)、当构造函数具有参数时,需要在创建对象时为其指定参数值。

//假设构造函数声明如下
Stock(const string & co, long n, double pr);

//则在创建对象时有如下使用几种方式

//此种方式,编译器可能创建一个临时对象,给food赋值后,又删除该临时对象
Stock food = Stock("World Cabbage", 250, 1.25);
//也可以使用构造函数给对象赋新值,这种方式一定会创建临时对象
food = Stock("Nifty Foods", 50, 1.25);

Stock food("World Cabbage", 250, 1.25);
Stock *pfood = new Stock("World Cabbage", 250, 1.25);

Stock food = {"World Cabbage", 250, 1.25} //c++11
Stock food {"World Cabbage", 250, 1.25} //c++11
Stock *pfood = new Stock{"World Cabbage", 250, 1.25} //c++11

 

当前也可以给构造函数所有参数默认值或者利用函数重载来避免创建对象时显示的调用构造函数。

2)、只要类方法不修改调用对象,就应该将其声明为const成员函数。

//声明
void show() const;
//定义
void Stock::show() const
{

}

 

3)、如果构造函数使用了new,则析构函数必须提供delete。

 

c/c++ -->对象和类