본문 바로가기

C++33

임시 객체에 대하여.... 실행 도중에 잠깐만 사용되는 객체, 사용자 모르게 이름도 없이 사용되는 객체, 소스 코드에도 없는 힙 이외의 공간에 생성되는... 이것이 임시 객체이다. 임시 객체는 코드 수행을 위해 컴파일러가 만들어내는 말 그대로 임시 객체이며, 임시 객체가 사용될 때에는 반드시 임시 객체의 생성과 소멸이라는 비용이 뒤따른다. 일반적으로 임시 객체가 생성되는 경우는 다음과 같이 크게 두 가지로 나눌 수 있다. 1. value 또는 const & 형식으로 함수에 전달되는 객체의 타입과 바인딩되어야 하는 (원래 함수 선언에 들어 있는) 매개변수의 타입이 다를 때. 2. 함수의 반환값이 value 일 때. size_t coutCh(const string &str, char ch); // 특정 ch의 개수 반환 함수 char.. 2009. 2. 16.
string 클래스 디자인 표준 string 클래스 C++ 표준 라이브러리에는 string이라는 이름의 클래스가 정의되어 있다. 클래스의 이름이 의미하는것처럼 문자열 처리를 쉽게 할 수 있도록 도움을 주기 위해 정의된 클래스이다. 이 클래스를 사용하기 위해서는 헤더파일 string을 포함해야 한다. #include string 클래스 역시 이름공간 std내에 선언되어 있다. 따라서 이름공간에 대한 언을 미리 해야한다. using std::string; string 클래스의 특징; 1. 생성자, 소멸자, 복사 생성자 그리고 대입 연산자를 정의해야 한다. - string 클래스는 문자열을 저장하기 위한 용도의 클래스이다. 그런대 저장하고자 하는 문자열의 길이가 일정치 않다. 따라서 우리는 문자열을 저장할 배열을 생성자 내에서 동적 할.. 2009. 2. 16.
oop 프로젝트 8단계 중... 8단계중 객체의 포인터를 저장하기 위한 용도로 사용할 수 있는 클래스의 선언부이다. 일명 "컨테이너(Continer)클래스" 라고 부른다. 달리 표현하면 "저장소 클래스" 정도가 되겠다(배열 클래스와는 성격이 조금 다르다.) #ifdef _CONTAINER_H_ #define _CONTAINER_H_ #include "Account.h" typedef Account* Element; class Container { private: Element* arr; int length; int aIndex; public: Container(int len=50); ~container(); void Insert(Element datea); Element Remove(int idx); Element GetItem(int.. 2009. 2. 12.
배열의 인덱스 연산자 오버로딩 이번에 오버로딩 할것은 배열의 요소에 접근할 때 사용되는 [] 연산자이다. 이는 다른 연산자들과 달리 피연산자가 연산자 안으로 들어가게 된다.(예: arr[10]). arr[i] = > arr.operator[](i) 객체를 저장할 수 있는 배열 클래스를 정의 할 수 도 있 다! ++++++ 대입 연산자의 오버로딩 ++++++ A a =b ; --> A a(b) => 복사 생성자 +_+ A a; A b; a=b; -> a(b) ==> 이런건 존재하지 않는다 -_- 복사생성자는 객체 생성시에 하는것이 복사생성자이다 대입연산이 이루어진게 같기는 하나 전혀 다른 의미이다! a.operator=(b) => 요러코롬 해석이 됨...ㅋㅋ 오버로딩된 대입 연산자를 제공하지 않으면, 디폴트 대입 연산자가 제공된다. 이.. 2009. 2. 10.