본문 바로가기

반응형

C

(7)
[문과 코린이의 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++ - 임시객체(임시객체 기초, 임시객체 정의, 임시객체 특징, 임시객체 사례) [문과 코린이의 IT 기록장] C,C++ - 임시객체(임시객체 기초, 임시객체 정의, 임시객체 특징, 임시객체 사례) 1. 임시객체 기초 임시객체란? : 실행 도중에 잠깐만 사용되는 객체로, 소스 코드에도 없는 힙 이외의 공간에 생성되는 것이 임시객체이다. ex ) main함수에서, A함수에 n을 인자로 넘겨주면, A함수의 통용범위에서만 사용가능한 int a라는 임시객체를 생성하게 된다. 임시객체 a는 n의 값인 1을 담게 되는데 이 때 복사가 일어난다. 이를 값에 의한 복사(Call by value)라고 한다. 마찬가지로, return a를 할 때도, 리턴 값은 int형 임시객체를 생성하고 담게 된다. int A() : 값 리턴, 임시객체가 생성된다. int & A() : 참조 리턴, 리턴용 임시객체를..
[문과 코린이의 IT 기록장] C,C++ - 복사생성자( 복사생성자란?, 얕은 복사 vs 깊은 복사 ) [문과 코린이의 IT 기록장] C,C++ - 복사생성자( 복사생성자란?, 얕은 복사 vs 깊은 복사 ) 1. 복사생성자란? 1) 복사생성자 형태 : 클래스이름 (const 클래스 이름 &참조변수){ } ex) SoSimple(const SoSimple & copy){ } 2) 복사생성자로 객체 생성 방법 a. 클래스명 생성할 객체 = 이미 생성된 객체; b. 클래스명 생성할 객체(이미 생성된 객체); // 이 방법을 사용하는 것이 더 좋음. // 어처피 전자는 암묵적인 형변환이 일어나기 때문에, explict로 선언된다면 형변환이 불가능하기 때문 3) 기본 복사 생성자 - 기본적으로 제공되는 생성자 중 하나. - 객체간의 변수의 값을 복사해준다. - 호출시키는 객체의 선언과 동시에 초기화할 때 생성한다...
[문과 코린이의 IT 기록장] C,C++ - 객체배열 (객체 배열, 객체 포인터 배열) [문과 코린이의 IT 기록장] C,C++ - 객체배열 (객체 배열, 객체 포인터 배열) 1. 객체 배열 ex) 1) 객체배열 형태 : 클래스명 객체명[크기] ex. Person parr[3] - 이 객체배열이 실행될 때, 생성자가 3번 실행된다. (3개의 객체가 생기는 것이므로) - 마찬가지로, return을 만나 소멸할 경우에도, 소멸자가 3번 실행된다. 2) 동적으로 객체 배열 선언하기 Point * p1 = new Point[5]; - 동적으로 객체 배열을 선언하는 경우에도, deflat constructor을 이용해 모두 초기화된다. - 즉, 이 코드는 Point형 객체에 대한, 5개를 사용할 수 있는 메모리 공간을 동적으로 확보하고, 각 공간에 defalt constructor로 객체를 생성한다..
[문과 코린이의 IT 기록장] C,C++ - new & delete (new & delete 사용방법 , new로 배열 할당하기) [문과 코린이의 IT 기록장] C,C++ - new & delete (new & delete 사용방법 , new로 배열 할당하기) [ 시작하기 전 ] - 코딩에서 메모리를 관리하는 것은 매우 중요한 문제이다. - 프로그램이 정확하게 실행되기 위해서는, 컴파일 시 모든 변수의 주소값이 확정되어야 한다. - 이와 같은 현상을 만들기 위해서는 프로그램에 많은 제약이 따르기 때문에, 프로그램 실행 시에 자유롭게 할당하고 해제할 수 있는 힙(heap)이라는 공간이 새로 생겼다. - 이 힙 상에서의 메모리 할당을 지원하기 위해, C++에서는 new & delete함수를 사용하고 있다. * new : 메모리 할당 * delete : 메모리 해제 1. new & delete 사용방법 - int *p = new int;..
[문과 코린이의 IT 기록장] C,C++ - 함수의 오버로딩 (함수의 오버로딩에 대한 이해, 함수의 오버로딩 과정) [문과 코린이의 IT 기록장] C,C++ - 함수의 오버로딩 (함수의 오버로딩에 대한 이해, 함수의 오버로딩 과정) 1. 함수의 오버로딩에 대한 이해 - C++에는 C와는 다른 '함수의 오버로딩'이라는 새로운 기능을 갖는다. * C라이브러리에는 pirntf와, scanf가 1개씩만 존재한다. * 그렇지만 C++에서는 같은 이름을 가진 함수가 여러 개 존재해도 된다. 즉, 함수의 이름에 과부하가 걸려도 상관이 없다는 것이다. - 그렇다면 C++에서 같은 이름의 함수를 호출했을 때 구분하는 방법은? : 함수의 인자를 보고 결정하게 된다. ex) - pirnt함수가 3개나 정의되있음에도 불구하고, C와 다르게 오류가 발생하지 않는 것을 볼 수 있다. - 즉, C++에서는 함수의 이름이 같더라도 인자가 다르다면..

반응형