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