Jac*_*kin 2 c++ logarithm operator-overloading
我在使用C++中的运算符重载实现对数类时遇到了一些问题.
我的第一个目标是如何实现这个changeBase方法,我一直很难绕过它.
我试图理解改变对数基数背后的数学,但我无法做到.有人可以向我解释一下吗?
我的第二个目标是能够执行左操作数为a double且右操作数为对数对象的操作.
这是我的日志类的片段:
// coefficient: double
// base: unsigned int
// result: double
class _log {
double coefficient, result;
unsigned int base;
public:
_log() {
base = 10;
coefficient = 0.0;
result = 0.0;
}
_log operator+ ( const double b ) const;
_log operator* ( const double b ) const;
_log operator- ( const double b ) const;
_log operator/ ( const double b ) const;
_log operator<< ( const _log &b );
double getValue() const;
bool changeBase( unsigned int base );
};
Run Code Online (Sandbox Code Playgroud)
你们真棒,谢谢你的时间.
我的第二个目标是能够执行一个操作,其中左操作数是双操作数,右操作数是对数操作.
为此,您需要将运算符声明为命名空间范围内的非成员函数(即,不在定义中_log),例如,
_log operator+(const double a, const _log& b);
Run Code Online (Sandbox Code Playgroud)
如果您需要访问私有成员_log,可以在以下定义中将其声明为朋友_log:
friend _log operator+(const double a, const _log& b);
Run Code Online (Sandbox Code Playgroud)
请注意,以下划线(例如_log)开头的名称保留给全局名称空间中的实现; 如果下划线后面跟一个大写字母或另一个下划线,则它随处可见.选择不同的班级名称是个好主意.
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |