13.6 Overloading unary operators +, -, and !
https://www.learncpp.com/cpp-tutorial/overloading-unary-operators/
positive (+), negative (-) and logical not (!) オペレーター.
すべてunary演算子(単項演算子)
example:
今回は、notハイフンとともに実装される例を見てみましょう
Overloading uary operators
positive (+), negative (-) and logical not (!) オペレーター.
すべてunary演算子(単項演算子)
example:
#include <iostream>
class Cents
{
private:
int m_cents {};
public:
Cents(int cents): m_cents(cents) {}
// Overload -Cents as a member function
Cents operator-() const;
int getCents() const { return m_cents; }
};
// note: this function is a member function!
Cents Cents::operator-() const
{
return -m_cents; // since return type is a Cents, this does an implicit conversion from int to Cents using the Cents(int) constructor
}
int main()
{
const Cents nickle{ 5 };
std::cout << "A nickle of debt is worth " << (-nickle).getCents() << " cents\n";
return 0;
}
単一演算子-adinを演算子で再ロードしてmember関数として実装する今回は、notハイフンとともに実装される例を見てみましょう
#include <iostream>
class Point
{
private:
double m_x {};
double m_y {};
double m_z {};
public:
Point(double x=0.0, double y=0.0, double z=0.0):
m_x{x}, m_y{y}, m_z{z}
{
}
// Convert a Point into its negative equivalent
Point operator- () const;
// Return true if the point is set at the origin
bool operator! () const;
double getX() const { return m_x; }
double getY() const { return m_y; }
double getZ() const { return m_z; }
};
// Convert a Point into its negative equivalent
Point Point::operator- () const
{
return { -m_x, -m_y, -m_z };
}
// Return true if the point is set at the origin, false otherwise
bool Point::operator! () const
{
return (m_x == 0.0 && m_y == 0.0 && m_z == 0.0);
}
int main()
{
Point point{}; // use default constructor to set to (0.0, 0.0, 0.0)
if (!point)
std::cout << "point is set at the origin.\n";
else
std::cout << "point is not set at the origin.\n";
return 0;
}
return値はboolで、pointのすべてのmember変数が0.0の場合、参照を返します.Reference
この問題について(13.6 Overloading unary operators +, -, and !), 我々は、より多くの情報をここで見つけました https://velog.io/@ikmy0ung/13.6-Overloading-unary-operators-andテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol