一、头文件创建
1.头文件定义了CMatrix类、类內部属性、函数、以及各种调用方法
头文件定义格式如下,属于条件编译宏定义,可以根据条件选择性的只编译某段程序,也可以防止重复定义。
#ifndef CMATRIX_H
#define CMATRIX_H
// 具体的
// 头文件
// 正文内容
#endif
二、有几类函数:
1.构造函数
①不带参数的构造函数;// CMatrix();
②带行、列及数据指针等参数的构造函数,并且参数带默认值;//CMatrix(int nRow, int nCol, double *pData=NULL) ;
③带文件路径参数的构造函数;//CMatrix(const char * strPath);
④ 拷贝构造函数 //CMatrix(const CMatrix& m);
⑤此外会用列表初始化成员变量:CMatrix(): m_nRow(0), m_nCol(0), m_pData(NULL);
bool Create(int nRow, int nCol, double *pData=NULL): 先删除原有空间,根据传入行列创建空间,如果pData不为空要将pData的内容拷贝到m_pData中。
CMatrix的一个重载函数:当m_pData的空间不能容纳n_Row*n_Col时 m_pData=NULL
▲特点:
构造函数具有如下几个特点:
①名字与类名相同,可以有参数,但是不能有返回值(void也不行);
②作用是对对象进行初始化工作,如给成员变量赋值等;
③如果定义类时没有写构造函数,系统会生成一个默认的无参构造函数,默认构造函数没有参数,不做任何工作;
④如果定义了构造函数,系统不再生成默认的无参构造函数;
⑤对象生成时构造函数自动调用,对象一旦生成,不能在其上再次执行构造函数
一个类可以有多个构造函数,为重载关系。
其中:构造函数CMatrix的初始化有两种方式:
①在给变量分配空间时就直接赋值即可,这种方法初始化效率较高
②在分配空间之后再给变量赋值
值得注意的是,初始化时,变量的顺序必须和定义时变量的顺序一致
▲用法:
CMatrix::CMatrix()
{
m_nRow = 0;
m_nCol = 0;
m_pData = NULL;
}
// 注意:传入参数的顺序和在类间定义时顺序一致
CMatrix::CMatrix():m_nRow(0), m_nCol(0), m_pData(0)
{
// 初始化为NULL
}
// 有参构造函数
CMatrix::CMatrix(int nRow, int nCol, double *pData):m_pData(0)
{
Create(nRow,nCol,pData); //调用创建对象的方法
}
// 拷贝构造函数
CMatrix::CMatri