是const还是not to const?

问题描述 投票:0回答:1

我正在写一个矩阵类,其中会有一些方法是围绕着矩阵的,比如乘法和求逆之类的东西。我知道C++的惯例是尽可能的让更多的东西(尤其是成员函数)成为常量,我想知道让我的行和列成为常量是否合理。这是我的类的结构。

#pragma once
#include <vector>
#include <string>
    namespace Math {
        class Matrix
        {
            private:
                //Variable initialization
                using data_type = double;
                const std::vector<std::vector<data_type>> m_rows;

                //I know this part isn't required but I'm doing it as a sort of code-shortener
                const int m_m, m_n;


            public:
                //Constructors
                Matrix(int rows, int cols) : m_m(rows), m_n(cols), m_rows(std::vector<std::vector<data_type>>(rows, std::vector<data_type>(cols, 0))) {};
                Matrix(std::vector<std::vector<data_type>> vect) : m_m(size(vect)), m_n(size(vect.at(0))), m_rows(std::move(vect)) {};


                //Non-static methods
                std::string asString() const;

                //Static methods
                static Matrix Identity(int dim); 
                static Matrix Multiply(Matrix& a, Matrix& b);
        };
}

同样的,根据标准,我想避免让m_rows成为常数 但我想让它成为可改变的,唯一的原因是担心 矩阵是否需要通过for循环或其他类似的方式来改变

谢谢!我正在写一个矩阵类,我想把它做成可变的,唯一的原因是担心矩阵是否需要用for循环或其他方式来改变。

c++ class matrix structure const
1个回答
0
投票

碰巧我目前也在写一个矩阵类,它有自己的迭代器,但是从零开始的。总之,问问自己。我的矩阵的大小会在任何时候发生变化吗?好吧,如果你打算分配给一个具有其他大小的矩阵,那么大小将不得不改变。如果你想有一个运算符*=,那就会改变它的大小。但如果你不介意没有这样的功能,那就用const吧! 然而,我不会在我的项目中这样做,原因如下。

© www.soinside.com 2019 - 2024. All rights reserved.