-
[C/C++ 강좌] 71강. 묵시적 형변환 (1)C++ 2022. 1. 18. 15:08
https://www.youtube.com/watch?v=p-HwpKOpaAs&list=PLlJhQXcLQBJqywc5dweQ75GBRubzPxhAk&index=76
1. 묵시적(암시적) 형변환
// 묵시적(암시적) 형변환 implicit conversion // 명시적 형변환 explicit conversion #include <iostream> #include <string> using namespace std; class Item { public: Item(int num) : num(num) { cout << "Item(int)" << endl; } Item(string name) : name(name) { cout << "Item(string)" << endl; } Item(int num, string name) : num(num), name(name) { cout << "Item(int, string)" << endl; } private: int num; string name; }; int main() { Item i1 = Item(1); Item i2(2); Item i3 = 3; i3 = 3; Item i4 = (Item)4; Item i5(5); it = (string)"stone"; Item i6(1, "grass"); Item i7 = { 2, "dirt" }; i7 = { 2, "dirt" }; }
main함수에서 i3 = 3;과 Item i4 = (Item)4; 라는 표현을 살펴보자.
먼저 Item i4 = (Item)4라는 표현을 살펴보면 int형이 Item형으로 명시적 형변환 되고 있는 것을 알 수 있다.
그런데 어떻게 Item으로 형변환 되는지 궁금하다.
그것은 변환생성자가 int형을 Item형으로 바꿔주는 역할을 하고 있다.Item(int num) : num(num) { // 생성자역할과 변환생성자 역할을 맡음. cout << "Item(int)" << endl; }
이 생성자가 변환생성자 역할을 하고있다. 이 생성자를 주석처리하면 구문오류가 뜨는 것을 볼 수 있다.
마찬가지로 다른 생성자들도 그에 맞는 자료형이 매개변수로 들어오게되면 변환 생성자 역할을 할 수 있다.
하지만 형변환을 해주지도 않았는데 알아서 형변환이 되어서 Item클래스에 저장되는 것을 알 수 있다.
이것들은 변환생성자를 통해 묵시적으로 형변환이 이루어지고 있는 것이다.
i5, i6, i7은 들어오는 자료형에 맞게 변환생성자의 역할을 하는 생성자들도 들어맞는 자료형에 따라 바뀐다.'C++' 카테고리의 다른 글
[C/C++ 강좌] 73강. 9부 종합문제 1 (동적 할당과 객체 복사) (0) 2022.01.18 [C/C++ 강좌] 72강. 묵시적 형변환 (2) (0) 2022.01.18 실습문제. 클래스를 이용하여 단어장 만들기. (0) 2022.01.17 객체지향 프로그래밍의 특징 (0) 2022.01.05 String클래스와 파일 입출력 응용 (0) 2022.01.05