본문 바로가기

반응형

문과 코린이의, [C. C++] 기록/C++ 이론

(46)
[문과 코린이의 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 기록장] C,C++ - Mutable( Mutable이란? ) [문과 코린이의 IT 기록장] C,C++ - Mutable( Mutable이란? ) 1. Mutalbe이란? : const 함수 내에서의 값의 변경을 예외적으로 허용한다. a. Mutable 부분 class SoSimple{ Private: int num1; mutable int num2; // 이 변수는, const 함수 내에서의 변경을 허용한다. ... void CopyToNum2() const{ // const 맴버 함수 (const 맴버 함수 내에서는 값 변환 X) num2 = num1; // const함수 내에서 num2에 저장된 값을 변경하고 있다. 이는 num2가 mutable로 선언되었기 때문에 가능하다. }; - mutable은 제한적으로, 매우 예외적인 경우에만 한해서 사용하는 키워드이..
[문과 코린이의 IT 기록장] C,C++ - static (static이란?, static 맴버 변수, static 맴버변수의 또 다른 접근방법, static 맴버함수, const static 맴버) [문과 코린이의 IT 기록장] C,C++ - static (static이란?, static 맴버 변수, static 맴버변수의 또 다른 접근방법, static 맴버함수, const static 맴버) 1. static이란? : static변수는 지역변수와 전역변수의 성질을 둘 다 가지고 있는 변수이다. 즉, 지역변수처럼 static이 선언된 함수 내에서만 사용이 가능하며, 한번만 초기화를 할 뿐 전역 변수처럼 프로그램이 종료될 때까지 메모리공간에 존재하게 된다. (함수가 반환되도 소멸 X) [ C언어에서 공부한 함수의 static 개념 ] 1) 전역변수에서 선언된 static의 의미 : 선언된 파일 내에서만 참조를 허용하겠다는 의미. 2) 함수 내에 선언된 static의 의미 : 한번만 초기화되고, 지역..
[문과 코린이의 IT 기록장] C,C++ - friend 선언( friend란?, 클래스와 friend 선언, friend 선언은 언제 해야하는가?, 함수의 friend 선언 ) [문과 코린이의 IT 기록장] C,C++ - friend 선언 ( friend란?, 클래스와 friend 선언, friend 선언은 언제 해야하는가?, 함수의 friend 선언 ) 1. friend란? : private 맴버의 접근을 허용하는 선언이다. - friend는 접근 지정자를 완벽히 무시할 수 있는 기능을 가졌다. 즉, private건, protect건, friend라고 선언된 대상에게는 완벽하게 public으로 작용한다. - friend는 당하는 쪽에 선언하며, 그 내용을 자기 클래스 안(혹은 함수)에 담는다. [ friend 선언의 특징 ] 1) friend지정은 단 방향이며, 명시적으로 지정한 대상만 friend가 된다. 2) friend지정은 전이되지 않으며, friend의 friend관..
[문과 코린이의 IT 기록장] C,C++ - 임시객체(임시객체 기초, 임시객체 정의, 임시객체 특징, 임시객체 사례) [문과 코린이의 IT 기록장] C,C++ - 임시객체(임시객체 기초, 임시객체 정의, 임시객체 특징, 임시객체 사례) 1. 임시객체 기초 임시객체란? : 실행 도중에 잠깐만 사용되는 객체로, 소스 코드에도 없는 힙 이외의 공간에 생성되는 것이 임시객체이다. ex ) main함수에서, A함수에 n을 인자로 넘겨주면, A함수의 통용범위에서만 사용가능한 int a라는 임시객체를 생성하게 된다. 임시객체 a는 n의 값인 1을 담게 되는데 이 때 복사가 일어난다. 이를 값에 의한 복사(Call by value)라고 한다. 마찬가지로, return a를 할 때도, 리턴 값은 int형 임시객체를 생성하고 담게 된다. int A() : 값 리턴, 임시객체가 생성된다. int & A() : 참조 리턴, 리턴용 임시객체를..

반응형