matrix.cpp

来自「一些C++的课件和实验源代码」· C++ 代码 · 共 66 行

CPP
66
字号

#include "stdafx.h"
#include "matrix.h"
#include <memory.h>
#include <iostream>
using namespace std;

// 构造函数,分配内存
matrix::matrix(short rows, short cols)
{
	matrix::rows = rows;
	matrix::cols = cols;
	elems = new int[rows * cols];

	// 初始化所有值为0
	memset(elems, 0, sizeof(int) * rows * cols);
}

// 析构函数,释放内存
matrix::~matrix(){
	if( elems != NULL){
		delete []elems;
		elems = NULL;
	}
}

// 重载'[]'以支持下标运算
int* matrix::operator[](short row)
{
	// 逻辑上,在类matrix的外部使用者看来它是一个二维矩阵,
	// 所以'[]'运算应该返回一个一维数组的首地址,其实是个指针
	return elems + row * cols;
}

// 输出矩阵各元素的值
void PrintMatrix(matrix m)
{
	for(int i = 0; i < m.rows; i++){
		for(int k = 0; k < m.cols; k++){
			cout << m.elems[i * m.cols + k] << "  ";
		}
		cout << endl;
	}
	cout << endl;
}
	
/*// 重写拷贝构造函数
matrix::matrix(const matrix & p)
{
	rows = p.rows;
	cols = p.cols;
	elems = new int[p.rows * p.cols];
	memcpy( elems, p.elems, sizeof(double) * p.rows * p.cols);
}

// 重载'='实现矩阵之间的赋值
void matrix::operator = (matrix p)
{
	rows = p.rows;
	cols = p.cols;
	elems = new int[p.rows * p.cols];
	memcpy( elems, p.elems, sizeof(double) * p.rows * p.cols);
}
*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?