一个Matrix类
时间:2010-08-20
来源:互联网
看到书上的一个类
template <typename Object>
class matrix
{
public:
matrix( int rows, int cols ) : array( rows )
{
for( int i = 0; i < rows; i++ )
array[ i ].resize( cols );
}
const vector<Object> & operator[]( int row ) const
{ return array[ row ]; }
vector<Object> & operator[]( int row )
{ return array[ row ]; }
int numrows( ) const
{ return array.size( ); }
int numcols( ) const
{ return numrows( ) ? array[ 0 ].size( ) : 0; }
private:
vector< vector<Object> > array;
};
在这个类的定义中,operator[]完全是两种signature,那么请问,在使用过程中,编译器是怎么识别这两个的呢?
比如:
void copy( const matrix<int> &from, matrix<int> &to )
{
for ( 0 ... to.size() )
to[i] = from[i]
}
在这个函数中,是通过那个const关键字识别的?
template <typename Object>
class matrix
{
public:
matrix( int rows, int cols ) : array( rows )
{
for( int i = 0; i < rows; i++ )
array[ i ].resize( cols );
}
const vector<Object> & operator[]( int row ) const
{ return array[ row ]; }
vector<Object> & operator[]( int row )
{ return array[ row ]; }
int numrows( ) const
{ return array.size( ); }
int numcols( ) const
{ return numrows( ) ? array[ 0 ].size( ) : 0; }
private:
vector< vector<Object> > array;
};
在这个类的定义中,operator[]完全是两种signature,那么请问,在使用过程中,编译器是怎么识别这两个的呢?
比如:
void copy( const matrix<int> &from, matrix<int> &to )
{
for ( 0 ... to.size() )
to[i] = from[i]
}
在这个函数中,是通过那个const关键字识别的?
作者: alexandnpu 发布时间: 2010-08-20
一般,C++不会区别重载中的const type和type,但是const成员函数会被区别对待(const this),即const type A::foo()和type A::foo()会覆盖,而A::foo()const与A::foo()不会覆盖,此例中显然使用非const成员函数。
作者: subuam 发布时间: 2010-08-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28