본문 바로가기

전체 글

(88)
[C++] operator 배열 연산자와 단항 증감 연산자 배열 연산자도 다중 정의할 수 있다. #include using namespace std; class TestClass { public: TestClass() {} ~TestClass() { delete num; } //변환 생성자 TestClass(int size) { num = new int[size]; memset(num, 0, sizeof(int) * size); } int operator[](int index) const { return num[index]; } int& operator[](int index) { return num[index]; } private: int *num = nullptr; }; void TestFunc(const TestClass& a) { cout
[C++] operator 복합 대입 연산자와 이동 대입 연산자 복합 대입 연산자와 마찬가지로 복합 대입 연산도 가능하도록 할 수 있다. #include using namespace std; class TestClass { public: TestClass() {} ~TestClass() {} //변환 생성자 TestClass(int param) { num = new int; *num = param; } //형변환 허용 operator int() { return *num; } //복합 대입 연산자 TestClass& operator+=(const TestClass& ref) { //현재 값 int* newNum = new int(*num); //누적 값 *newNum += *ref.num; //기존 값 지우고 새 메모리 대체 delete num; num = newNum..
[C++] 연산자 함수와 operator 연산자 함수란? 연산자 함수는 연산자를 이용하듯 호출할 수 있는 메서드이다. 예를 들어 클래스에 대한 객체 a와 b가 있다면 b = a + 3; 은 문법상 오류이다. 하지만 사용자 관점에서 이러한 접근은 매우 직접적이고 알아보기 쉽다. 간단한 덧셈 예이다. #include using namespace std; class TestClass { public: TestClass() { cout
[C++] 이동 생성자와 이동 시맨틱(Move semantics) 이동 생성자란? 이름 없는 임시 객체가 생기는 것을 막을 수 없다. 그러나 무의미한 임시 객체의 생성은 프로그램의 효율을 떨어뜨린다. 이러한 문제 때문에 생긴 것이 이동 생성자이다. 임시 객체는 어차피 사라지는 객체이다. 깊은 복사를 수행할 필요 없이 얕은 복사를 수행함으로써 성능을 높일 수 있다. #include using namespace std; class TestClass { public: TestClass() { cout
42 Seoul 이노베이션 아카데미 지원과 혜택(+온라인 테스트 후기) Echole 42 은 프랑시에서 IT 인재 육성 시스템을 혁신하기 위해 설립한 교육기관입니다. 에콜42와 비슷한 교육시스템이 이번에 우리나라에 생겼습니다. 선발 프로세스 혜택 1. 최고의 교육 42 Seoul이 제공하는 교육 프로그램, 동기와 열정 가득한 동료 2. 교육 환경 24시간 개방되는 교육 공간, 휴식 공간 제공 3. 교육 지원금 1개월 집중교육부터 월 100만원 수준의 교육 지원금 지급 * 지급 조건, 방법은 추후 공지 온라인 테스트 후기 온라인 테스트는 회원가입후 진행할 수 있습니다. 회원가입 시 영어 대, 소문자, 숫자, 특수문자 포함해야 합니다.(영어 대문자까지 사용해야 하니 머리아픔) 합격 시 체크인 미팅 등록을 위해 꼭! 기억해야 합니다. 온라인 테스트는 1단계와 2단계로 나눠져 있습..
[C++] operator 대입연산자 변수뿐만 아니라 클래스나 구조체에서도 단순 대입 연산이 이루어질 수 있다. #include using namespace std; class TestClass { public: TestClass() {} TestClass(int param) { num = new int; *num = param; } TestClass(const TestClass& ref) { num = new int; *num = *ref.num; } ~TestClass() { delete num; } int getNum() { return *num; } private: int *num = nullptr; }; int main() { TestClass a(10); TestClass b(20); a = b;//에러 cout
[C++] 변환 생성자의 묵시적 변환과 임시 객체 explicit 묵시적이란? "직접적으로 말이나 행동으로 드러내지 않고 은연중에 뜻을 나타내 보이는. 또는 그런 것." 매개변수가 한 개인 생성자를 '변환 생성자(Conversion constructor)'라고 하는데 C++에서는 변환 생성자에서 묵시적으로 형변환이 일어나는 경우가 있다. #include using namespace std; class TestClass { public: TestClass(int param) : num(param) { cout
[C++] 복사 생성자(copy constructor) 복사 생성자(copy constructor)란? 복사 생성자란 객체의 복사본을 생성할 때 호출되는 생성자이다. 복사 생성자도 생성자와 마찬가지로 정의하지 않으면 컴파일러가 자동으로 만들어준다. 복사 생성자의 형태는 다음과 같다. 클래스이름(const 클래스이름 &변수이름); 다음 예제는 복사 생성자를 사용하였고 생성자와 마찬가지로 멤버 변수를 초기화하였다. #include using namespace std; class TestClass { public: TestClass(int param) : num(param)//생성자 초기화 { cout