【发布时间】:2018-04-08 03:13:48
【问题描述】:
来自Boost official site的这个示例代码:
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
using namespace boost::numeric::ublas;
matrix<double> m (3, 3);
for (unsigned i = 0; i < m.size1 (); ++ i)
for (unsigned j = 0; j < m.size2 (); ++ j)
m (i, j) = 3 * i + j;
std::cout << m << std::endl;
}
我对@987654325@ 感到困惑,因为 m 是一个对象,唯一将类和参数结合在一起的情况是构造函数,但显然不是。
我是 C++ 的初学者。但是,与 Ruby 不同的是,C++ 中没有什么技巧。
为了对C++有一个深入的发现,有没有大神可以给我一个原则性的解释?
【问题讨论】:
-
不,
m不是一个类,它是一个变量。 -
在 c++ 中,您可以定义自己的运算符,最流行的运算符之一是
operator[],但operator()也是可能的。检查这个:boost.org/doc/libs/1_57_0/boost/numeric/ublas/matrix.hpp 并搜索const_reference operator () (size_type i, size_type j) -
另外,所有的左值都可以赋值。 |在向Stack Overflow 提问之前,您需要了解有关 C++ 的更多信息,否则此类问题将被视为不清楚。
-
@user202729,我的意思是对象,这是我的书面错误。
-
@Frederik.L,非常感谢。在我的想象中,() 不是运算符,因为函数调用和新对象。现在我对 C++ 有了新的理解。
标签: c++ matrix boost assign ublas