C++ 논리 연산자 오버로딩

진경천·2023년 9월 26일
0

C++

목록 보기
46/90

논리 연산자 오버로딩

or 연산자는 앞이 true 일때 뒤의 문을 실행하지 않고
and 연산자는 앞이 false 일때 뒤의 문을 실행하지 않는다.
ex) true || func()
false && func()
func()를 실행하지 않는다.

예제

#pragma warning(disable: 4996)

#include <iostream>
#include <cstring>
#include <compare>

using namespace std;

class String
{
private:
	char* _chars;

public:
	explicit String(const char* chars)
		: _chars(new char[strlen(chars) + 1]) {
		strcpy(_chars, chars);
	}

	bool operator!() const {
		return strlen(_chars) == 0;
	}

	bool operator&&(bool b) const {
		return strlen(_chars) > 0 && b;
	}

	bool operator||(bool b) const {
		return strlen(_chars) > 0 || b;
	}

	void print() {
		cout << _chars << endl;
	}
};

int main() {
	String s0{ "" };
	String s1{ "bbb" };

	if (!s0)
		cout << "empty" << endl;
	if (s0 && true)
		cout << "s0 = true" << endl;
	else
		cout << "s0 = false" << endl;
	if (s1 || false)
		cout << "s1 = true" << endl;
	else
		cout << "s1 = false" << endl;
}
  • 실행 결과

    empty
    s0 = false
    s1 = true

profile
어중이떠중이

0개의 댓글