【C++】实验一 CMatrix类设计与实现

本文详细介绍了C++中的CMatrix类,包括构造函数的声明与实现,如头文件CMatrix.h的编写,以及创建成员变量的方法。接着讨论了析构函数的定义,用于对象生命周期结束时释放资源。还深入探讨了运算符重载,如+、-、+=、-=、==、!=、=等,并涵盖了数组和函数调用的重载。此外,文章也提到了强制类型转换和友元函数的概念,总结了通过实验对C++类、构造器、析构函数和运算符重载的理解,以及友元函数在访问私有成员中的作用。
摘要由CSDN通过智能技术生成

目录

一、构造函数

1、头文件声明  CMatrix.h

2、函数的实现(类内部方法)CMatrix.cpp

2.1 构造器

二、析构函数

析构函数的定义 

三、运算符重载

1、运算符重载

+:

-:

+=:

-=:

==:

!=:

=:

2.操作符重载

[ ]:

():

>>:

<<:

3.强制类型转换

double:

四、友元函数

总结



一、构造函数

1、头文件声明  CMatrix.h


此外会用列表初始化成员变量:CMatrix(): m_nRow(0), m_nCol(0), m_pData(NULL);
bool Create(int nRow, int nCol, double *pData=NULL): 先删除原有空间,根据传入行列创建空间,如果pData不为空要将pData的内容拷贝到m_pData中。

//构建CMatrix.h头文件   
#ifndef CMATRIX_H
#define CMATRIX_H
#include <iostream>
using namespace std;
class CMatrix
{
 public:
 CMatrix();//不带参数的构造函数
 CMatrix(int nRow,int nCol,double *pData=NULL);//带行、列及数据指针等参数的构造函数,并且参数带默认值
 CMatrix(const CMatrix& m);//拷贝构造函数
 CMatrix(const char * strPath);//带文件路径参数的构造函数
 ~CMatrix();
bool Create(int nRow,int nCol,double *pData=NULL);
void Set(int nRow,int nCol,double dVale);
void Release();
friend istream & operator>>(istream& is,CMatrix & m);
friend ostream & operator<<(ostream& os,const CMatrix &m);
CMatrix& operator=(const CMatrix& m);
CMatrix& operator+=(const CMatrix& m);
//  CMatrix& operator+(const CMatrix& m);
//  CMatrix operator+(const CMatrix& m1,const CMatrix& m2);
double & operator[](int nIndex);
double & operator()(int nRow,int nCol);
bool operator ==(const CMatrix& m);
bool operator !=(const CMatrix& m);
operator double();
private:
int m_nRow;
int m_nCol;
double *m_pData;
};
CMatrix operator+(const CMatrix& m1,const CMatrix& m2);
inline void CMatrix::Set(int nRow,int nCol,double dVal)
{
   m_pData[nRow*m_nCol+nCol]=dVal;
}
#endif

2、函数的实现(类内部方法)CMatrix.cpp

2.1 构造器

构造器可以提供许多特殊的方法,构造器作为一种方法,负责类成员变量(域)的初始化。实例构造器分为缺省构造器和非缺省构造器。

2.1.1   缺省构造器(无参构造器)

无参数的构造方法,可以控制new对象。假设无参构造方法不是public 修饰 而是private ,那么别人将不只能直接new一个对象,这就起到了控制作用。

CMatrix::CMatrix():m_nRow(0),m_nCol(0),m_pData(0)
{

}


 

2.1.2   有参构造器

有参数的构造方法的主要目的是为类中的属性初始化

CMatrix::CMatrix(int nRow,int nCol,double *pData):m_pData(0)
{
  Create(nRow,nCol,pData);
}
CMatrix::CMatrix(const CMatrix& m):m_pData(0)
{
 *this = m;
}
CMatrix::CMatrix(const char * strPath)
{
  m_pData = 0;
  m_nRow = m_nCol = 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值