我在操作员重载方面遇到了很多麻烦。我只是不确定它的用途,以及何时应该使用它来产生所需的结果。这与我的困惑密切相关,即在创建复制构造函数时(据我所知,每当函数按值传递类类型的对象时都会调用该构造函数),通常认为 = 赋值运算符应该被重载并且应该明确定义析构函数。
任何帮助将不胜感激。
我在操作员重载方面遇到了很多麻烦。我只是不确定它的用途,以及何时应该使用它来产生所需的结果。这与我的困惑密切相关,即在创建复制构造函数时(据我所知,每当函数按值传递类类型的对象时都会调用该构造函数),通常认为 = 赋值运算符应该被重载并且应该明确定义析构函数。
任何帮助将不胜感激。
这是两个问题。关于三法则的问题已在另一个主题中得到解答(剧透:如果您正在实施其中一个,您可能正在管理一个资源,如果您这样做,您应该实施另外两个来管理该资源)。
有关使用运算符重载的简短答案,请比较需要此操作的矩阵库的语法:
M.multiply( a).plus( N).plus( A.multiply( B));
甚至:
plus( plus( multiply( a, M), N), multiply( A,B));
和:
a * M + N + A * B;