연산자 오버로딩 =과 ==
2019. 8. 19. 11:02ㆍPL/C++
대입 연산자인 =의 연산자 오버로딩은 기본적으로 정의되어있지만, ==은 애매하기 때문에 사용자가 연산자 오버로딩을 정의해야만 한다
#include <string>
#include <iostream>
using namespace std;
class Person {
private:
string name;
public:
Person(string name) {
this->name = name;
}
bool operator==(const Person &other) {
return this->name == other.name;
}
};
int main(void) {
Person A("수리");
Person B("노을");
if (A == B) {
cout << "같다\n";
}
else {
cout << "다르다\n";
}
A = B;
if (A == B) {
cout << "같다\n";
}
else {
cout << "다르다\n";
}
return 0;
}
[추가 19.08.20] +연산자를 정의하면 자동적으로 +=이 정의되는 줄 알았지만 실제로 그렇게 동작하지는 않고, +=도 따로 연산자 오버로딩으로 정의해야만 한다
#include <iostream>
using namespace std;
class Point {
private:
int x, y;
public:
Point(int x, int y) : x(x), y(y) {}
Point& operator+(const Point &other) {
x += other.x;
y += other.y;
return *this;
}
Point& operator+=(const Point &other) {
x += other.x;
y += other.y;
return *this;
}
int getX() {
return x;
}
int getY() {
return y;
}
};
int main(void) {
Point p1(1, 2);
Point p2(3, 4);
Point p3 = p1 + p2;
cout << p3.getX() << ' ' << p3.getY() << '\n';
p1 += p2;
cout << p1.getX() << ' ' << p1.getY() << '\n';
return 0;
}
'PL > C++' 카테고리의 다른 글
네임스페이스 (0) | 2019.08.20 |
---|---|
연산자를 오버로딩하는 두 가지 방법 (0) | 2019.08.19 |
[boost.Asio tutorial] Using a member function as a handler (0) | 2019.08.14 |
[boost.Asio tutorial] Binding arguments to a handler (0) | 2019.08.14 |
[boost.Asio tutorial] Using a timer asynchronously (0) | 2019.08.13 |