본문 바로가기

반응형

분류 전체보기

(297)
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 7 : 포인터 연산자 오버로딩(포인터 연산자 오버로딩, 스마트 포인터 (Smart Pointer), ( )연산자의 오버로딩과 펑터(Functor), 임시객체로의 자동 형 .. [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 7 : 포인터 연산자 오버로딩 (포인터 연산자 오버로딩, 스마트 포인터 (Smart Pointer), ( )연산자의 오버로딩과 펑터(Functor), 임시객체로의 자동 형 변환과 변환 연산자(Conversion Operator)) 1. 포인터 연산자 오버로딩 - 포인터를 기반으로 하는 연산자 모두를, 포인터 연산자라고 한다. - 그 중에서도 대표적인 포인터 연산자는 다음과 같다. a. -> : 포인터가 가리키는 객체의 맴버에 접근 b. * : 포인터가 가리키는 객체에 접근 - 이 두 연산자의 오버로딩은, 일반적인 연산자의 오버로딩과 크게 차이가 없다. ex ) #include using namespace std; class Number { pr..
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 6 : new & delete 연산자 오버로딩 (new 연산자 오버로딩에 대한 상세한 이해, operator new & operator new[ ]) [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 6 : new & delete 연산자 오버로딩 (new 연산자 오버로딩에 대한 상세한 이해, operator new & operator new[ ]) 1. new 연산자 오버로딩에 대한 상세한 이해 - new & delete 연산자 오버로딩은, 기존의 앞서 봤던 연산자 오버로딩과 많이 다르다. * new & delete 또한, 연산자이다. 따라서 연산자 오버로딩이 가능하다. 1) new 연산자가 하는 일 a. 메모리 공간의 할당 b. 생성자의 호출 c. 할당하고자 하는 자료형에 맞게 반환된, 주소 값의 형 변환 - 이와 같이, 객체의 생성과정은 다소 복잡한 과정을 거친다. - 그러나 이 중, 생성자의 호출과 반환된 주소값의 형변환은 컴파일러가 ..
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 5 : 배열의 인덱스 연산자 오버로딩 (배열 클래스, const 함수를 이용한 오버로딩의 활용, 객체의 저장을 위한, 배열 클래스의 정의) [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 4 : 배열의 인덱스 연산자 오버로딩 (배열 클래스, const 함수를 이용한 오버로딩의 활용, 객체의 저장을 위한, 배열 클래스의 정의) - 이번 포스팅에서는, 배열요소에 접근할 때 사용하는, [ ] 연산자를 오버로딩 하고자 한다. 1. 배열 클래스 - C, C++의 기본 배열은 경계검사를 하지 않는다는 단점을 가지고 있다. 따라서 컴파일, 실행 모두 무리없이 진행되는, 엉뚱한 코드가 만들어질 수 있다. int main(){ int arr[3] = {1,2,3}; cout
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 4 : (cout, endl 오버로딩) [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 4 : (cout, endl 오버로딩) 1. cout, endl 오버로딩 ex 1 ) #include namespace mystd { // cout과 endl을, 직접 구현하기 위해서 선언한 이름공간이다. using namespace std; // 이 선언은 namespace mystd 내에서, 지역적으로 이루어졌으니, 이 지역 내에서만 유효한 선언이 된다. class ostream { public: // operator
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 3 : 대입연산자 (대입연산자, 디폴트 대입 연산자의 문제점, 상속 구조에서의 대입 연산자 호출, 이니셜라이저) [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 3 : 대입연산자 (대입연산자, 디폴트 대입 연산자의 문제점, 상속 구조에서의 대입 연산자 호출, 이니셜라이저) 1. 대입연산자 1) 대입 연산자 오버로딩은, 복사 생성자와 매우 유사하다. [ 디폴트 대입 연산자 ] - 정의하지 않으면 디폴트 대입 연산자가 삽입된다. - 디폴트 대입 연산자는 맴버 대 맴버의 복사(얕은 복사)를 진행한다. - 연산자 내에서 동적 할당을 한다면, 그리고 깊은 복사가 필요하다면 직접 정의해야 한다. 2) 복사생성자 vs 대입연산자 : 호출되는 시점에서 차이가 존재한다. a. 복사생성자 호출 상황 int main(){ Point pos1(5,7); Point pos2 = pos1; // 새로 생성하는 객체 pos2의 ..
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 2 : 단항 연산자 오버로딩(증감 연산자 오버로딩, 전위증가 및 후위증가의 구분) [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 2 : 단항 연산자 오버로딩 (증감 연산자 오버로딩, 전위증가 및 후위증가의 구분) 1. 증감 연산자 오버로딩 ++ pos; // pos는 객체 a. 맴버함수로 오버로딩하는 경우 : pos.operator++(); b. 전역함수로 오버로딩하는 경우 : operator++.(pos); #include using namespace std; class Point { // point 클래스 private: int xpos, ypos; public: Point(int x = 0, int y = 0) : xpos(x), ypos(y){ } // 생성자 (x=0, y=0으로 초기화) void ShowPosition() const { // [xpos, ypo..
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 1 : ( operator 함수 사용법, operator+ 함수, 연산자를 오버로딩 하는데 있어서의 주의사항, 연산자 오버로딩이라고 이름이 붙은 이유는?, operator * .. [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 1 : ( operator 함수 사용법, operator+ 함수, 연산자를 오버로딩 하는데 있어서의 주의사항, 연산자 오버로딩이라고 이름이 붙은 이유는?, operator * 함수 ) - C언어에서는 불가능하지만, C++에서는 사용자 정의 연산자를 사용할 수 있다. - ::(범위 지정), .(맴버 지정), .*(맴버 포인터로 맴버 지정)을 제외한 모든 연산자들은 사용할 수 있다. ex ) 1. 산술 연산자 (+, -, *) 2. 축약형 연산자 (+=, -=) 3. 비교 연산자 (>=, ==) 4. 논리 연산자 (&&, ||) 5. 맴버 선택 연산자 (->, * : 역참조 연산자 ex. 포인터 *p와 같은 것) 6. 증감 연산자 (++, --) ..
[문과 코린이의 IT기록장] 컴퓨터 구조 - 1강. 컴퓨터 추상화 및 관련 기술 [ (7) 전력 장벽 ~ (8) 현저한 변화 : 단일프로세서에서 멀티프로세서로의 변화 ] [문과 코린이의 IT기록장] 컴퓨터 구조 - 1강. 컴퓨터 추상화 및 관련 기술 [ (7) 전력 장벽 ~ (8) 현저한 변화 : 단일프로세서에서 멀티프로세서로의 변화 ] 1. 전력 장벽 1) 전력 장벽 - 클럭 속도와 소비 전력은 오랫동안 빠르게 증가하다가 최근에 주춤해졋음. * 속도와 전력은 서로 연관되어 있음 - 최근 성장이 정체된 이유는, 상용 마이크로프로세서의 냉각 문제 때문에 실제로 사용할 수 있는 전력이 한계에 도달하였기 때문. (현재 4GHz이 전력장벽) - 집적회로의 주된 기술인 CMOS가 에너지를 소비하는 주원인은 동적 에너지임. * 동적 에너지란? 트랜지스터가 0-1로 혹은 그 반대로 스위칭하는 동안에 소비되는 에너지 - 동적 에너지는 각 트랜지스터의 용량성 부하와 인가되는 전압에 의해..

반응형