일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- assignment operator
- 반복문
- baekjoon
- pass by reference
- Python
- function
- Pre-processing
- vscode
- OOP
- 문자열
- 포인터
- programming
- 오블완
- 함수
- 티스토리챌린지
- Class
- array
- predictive analysis
- C++
- Deep Learning
- raw data
- 파이썬
- pointer
- 알고리즘
- string
- const
- 배열
- 백준
- Object Oriented Programming
- Data Science
- Today
- Total
목록C++/기타 (16)
Channi Studies

저번 포스트에서 다룬 복사 방식의 대입 연산자 오버로딩은 l-value에 대해서 작동합니다. 이번 포스트에서 다룰 이동 대입 연산자 오버로딩은 r-value를 다룹니다. 다음 코드 조각을 살펴봅시다. Mystring s1; s1 = Mystring{"Ricky"};// Move Assignment 여기서 empty string을 담는 Mystring 객체 s1을 선언했습니다. 그리고 s1에 Mystring{"Ricky"}를 통해서 Ricky라는 문자열을 속성으로 지닌 Mystring 객체를 할당했습니다. 여기서 중요한 점은, s1에 값을 저장하기 위해서 새로운 이름 없는 임시 객체를 만들고, 그 값을 s1에 저장을 한 뒤에 임시 객체를 제거합니다. 이것이 r-value 객체입니다. 하지만 아시다시피 이런..
C++에서는, 한 객체에서 다른 객체로의 대입 연산자 사용이 가능합니다. Mystring s1 {"Frank"}; Mystring s2 = s1;// NOT Assingment // Same as Mystring s2 {s1}; s2 = s1// Assignment C++ 컴파일러는 기본 대입 연산자를 생성합니다. 이는 얕은 복사(shallow copy / memberwise assignment) 입니다. 만약 우리가 사용하는 클래스의 속성 중 raw pointer를 사용한다면, 우리는 깊은 복사(deep copy)를 해야합니다. 이번 포스트에서는 c-style string값의 포인터를 속성으로 지니는 Mystring 클래스를 다뤄보겠습니다. class Mystring { private: char *st..
연산자 오버로딩이란? C++ 에서 우리는 여러가지 연산자를 사용해왔습니다. 더하기(+), 빼기(-), 나누기(/), 곱하기(*)가 대표적입니다. 사실 이러한 연산자들도 이미 오버로딩이 되어 있는 형태입니다. 오버로딩이 한 함수가 여러 다른 자료형 값을 처리할 수 있게 반복적으로 선언하는 것이였죠? 위의 일반적 연산자들도 integer, double, float 등의 자료형을 모두 다룰 수 있기 때문입니다. 다시 돌아와서 이러한 연산자 오버로딩을 우리가 사용하게 될 때에는, 주로 user defined type들을 built-in type들과 비슷하게 행동할 수 있게 하는 목적입니다. 또한 코드의 가독성을 높일 수가 있습니다. 이러한 연산자 오버로딩은 컴파일러에서 자동적으로 행해지지 않습니다. 한 가지 종..