[英]Overloading unary operator~
I am stuck with this unary operator~
overloading part.我被这个一元运算符困住了
operator~
重载部分。 This is my code:这是我的代码:
Header Header
#ifndef NYBLE_H
#define NYBLE_H
class Nyble
{
public:
// insert your code here
Nyble()=default;
Nyble(const Nyble& n);
Nyble& operator=(const Nyble& n);
explicit Nyble(unsigned char d);
~Nyble();
Nyble operator~(const Nyble& rhs) const;
unsigned char getData();
private:
// Do not change this data
unsigned char data;
};
Source资源
Nyble Nyble::operator~(const Nyble&rhs) const
{
char unsigned temp=rhs.data
temp= static_cast<unsigned char>(~temp);
return Nyble(temp);
}
Is this correct?这个对吗? If not, what is the correct form?
如果不是,正确的形式是什么?
You almost had it.你几乎拥有它。 Just don't use any parameter for your
operator~
method.只是不要为您的
operator~
方法使用任何参数。 Also, implementation is a half-liner, as you can directly construct and return an object using ~data
as an argument.此外,实现是半线性的,因为您可以使用
~data
作为参数直接构造并返回 object。 A possible implementation and test:一个可能的实现和测试:
#include <iostream> // cout
#include <ostream>
class Nyble {
public:
explicit Nyble(unsigned char d) : data{d} {}
Nyble operator~() const { return Nyble{static_cast<unsigned char>(~data)}; }
unsigned char getData() const { return data; }
private:
unsigned char data;
};
std::ostream& operator<<(std::ostream& os, const Nyble& n)
{
return os << "0x" << std::hex << static_cast<int>(n.getData());
}
int main() {
for (unsigned short us{0}; us <= static_cast<unsigned char>(~0); ++us)
{
Nyble n{static_cast<unsigned char>(us)};
std::cout << "n = " << n << ", ~n = " << ~n << "\n";
}
}
// Outputs:
//
// n = 0x0, ~n = 0xff
// n = 0x1, ~n = 0xfe
// n = 0x2, ~n = 0xfd
// n = 0x3, ~n = 0xfc
// ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.