728x90 반응형 C++59 Polygon 연습문제 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129#include #define _CRT_SECURE_NO_WARNINGS#pragma warning(disable:4996)#include using namespace std; struct Point { //변수의.. 2022. 7. 10. [C++] 묵시적 형변환 형변환의 종류는 두가지이다. 묵시적 형변환과 암시적 형변환이 있다. 생성자가 형변환도 담당하나요? i1,i2,i3까지는 납득이 되는 코드이다. 다만 i3=3밑부터 납득이 가지 않는다. 출력을 해보면 생성자가 5개나 호출된 것을 확인할 수 있는데 우선 i4부터 보자. int형인 4를 Item으로 형변환을 시켰더니 생성자가 호출되었다. 이때 이 Item(int num) 생성자를 변환생성자라고 본다. 비슷한 맥락으로 i3=3;을 이해해볼 수 있다. 3이 i3가 될 수 있을까를 고민할때 변환생성자가 있으니 바꿔줄 수 있다! 3을 Item객체로 바꿔주는 과정에서 변환생성자를 통해 임시객체가 생기고, 임시객체에 있는 3이라는 값이 i3로 얕은복사가 된다. (이동 생성자) 그래서 i3=3; 을 묵시적 변환 Item .. 2022. 7. 10. [C++] 이동 시맨틱 이전까지는 얕은 복사의 문제점을 가지고 깊은 복사를 진행했다면 이번에는 의도적으로 얕은복사를 해볼 것이다. 깊은 복사또한 단점이 있다. strData를 전부 새로 할당한다음에 원본 객체에 있는 문자열을 하나하나 복사한다. 근데 만약에 길이가 길어지면 / 또는 객체의 크기가 커지면 많은 양의 연산을 수행해야한다. 임시객체와 깊은 복사 이 예시를 보면 분명 s5=getName();을 할때만 복사 대입연산자가 실행되면서 깊은복사가 일어날 것이라 추론할 수 있지만 실제로는 복사생성자도 호출되면서 깊은복사가 2번 일어나게 된다. (벌써 비효율이 느껴진다..🚨🚨) 복사생성자가 왜 호출되는지 알기 위해서는 임시객체를 알아야 한다. 우선 getName()이 리턴되면서 소멸자가 호출된다. 문제는 a=getName();을.. 2022. 7. 10. [C++] 대입연산자 객체를 먼저 생성한다음에 다른 객체를 이 객체에 대입하려면 어떻게 해야할까? 객체가 생긴 시점에는 기본생성자가 호출이 된 다음에 따로 대입을 한것인데 이때는 복사생성자가 호출이 되지 않는다. 복사생성자 복습 https://we1cometomeanings.tistory.com/217?category=986307 [C++기초] 깊은복사와 얕은 복사 ,복사생성자 얕은 복사(참조만 복사) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include using namespace std; int main() { int* a = new int(5); int* b = new int(3); a = b; .. we1cometomeanings.tistory.com 변수의 경우에는 대입연산자 (=)를.. 2022. 7. 9. 이전 1 ··· 3 4 5 6 7 8 9 ··· 15 다음 728x90 반응형