C++ 연산자 오버로딩 - 변환 연산자 오버로딩, 변환 생성

진경천·2023년 9월 27일
0

C++

목록 보기
49/90

문자열을 이용한 변환 생성자

	explicit String(const char* chars) {

	}

	String(const char* s0, const char* s1) {
		cout << s0 << endl;
		cout << s1 << endl;
	}
   
int main(){
	// String(s) = "abc"; 암시적(묵시적) 호출이기 때문에 explicit에 의하여 컴파일 에러
	String s0("abc");
	String s1 = String("abc" , "def");
}
  • 실행 결과

    abc
    def

initializer_list를 이용한 함수 오버로딩

	String(std::initializer_list<const char*> strs) {
		for (const char* str : strs) {
			cout << str << endl;
		}
	}
    
int main(){
	String s2{ "A1", "B1", "C1", "D1" };
}
  • 실행 결과

    A1
    B1
    C1
    D1

문자열을 bool형식으로 변환

#pragma warning(disable : 4996)

#include <iostream>
#include <cstring>

using namespace std;

class String {
private:
	char* _chars;

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

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

int main() {
	String s0 = "abc";
	bool result = (bool)s0;	// explicit로 인해 강제 형변환을 시킴

	cout << result << endl;
}
  • 실행 결과

    1

profile
어중이떠중이

0개의 댓글