</pre> 今天实现一个矩阵类,重载相加运算符,我是这样实现的:<pre name="code" class="cpp">Matrix Matrix::operator+(const Matrix& B)const
{
if((row != B.row) || (col != B.col))
throw invalid_argument("The matrix should be matched");
Matrix& T = * new Matrix;
T.row = row;
T.col = col;
T.elems = new double[row*col];
for(int i = 0; i != row*col; ++i)
T.elems[i] = elems[i] + B.elems[i];
return T;
};
类方法中,参数是该类对象的引用,实现时可以直接访问该类的private成员,让我以为传引用可以直接访问引用对象private成员
然后我写了一个全局函数,参数也是引用,却不能访问对象的private成员了,如下的代码会报错
bool operator==(const Matrix &A, const Matrix &B)
{
if(A.row != B.row || A.col != B.col)
{
return false;
}
for ( int i = 0; i < A.row; ++i )
{
for ( int j = 0; j < A.col; ++j )
{
i

本文通过实例解析了C++中引用作为参数时能否访问private成员的问题。指出类方法内,引用参数可以访问类的private成员,但全局函数中则不能。这种行为源于类方法对同一类对象的特殊访问权限。当类方法的引用参数为非本类对象时,同样无法访问private成员。
最低0.47元/天 解锁文章
3287

被折叠的 条评论
为什么被折叠?



