C++/C++ 기본 40

객체 포인터

객체 포인터 C++에서 객체를 다루기 위해 객체에 대한 포인터 변수를 선언하고, 이 포인터 변수로 객체의 멤버 변수를 읽고 값을 쓰거나 멤버 함수를 호출할 수 있다. - 객체에 대한 포인터 변수 선언 Circle 타입의 객체에 대한 포인터 변수 p는 다음과 같이 선언한다. i.eCircle *p; 선언된 포인터 변수 p는 현재 아무 객체도 가리키고 있지 않다. - 포인터 변수에 객체 주소 지정 객체의 주소는 객체 이름 앞에 & 연산자를 사용하여 표현한다. 포인터 변수 p에 donut 객체의 주소를 저장하는 코드는 다음과 같다. i.e.Circle donut;p = &donut; //p에 donut 객체의 조수 저장 포인터 변수를 선언할 때 다음과 같이 객체의 주소로 초기화할 수도 있다. i.e.Circl..

C++/C++ 기본 2018.07.07

바람직한 C++ 프로그램 작성법

바람직한 C++ 프로그램 작성법 C++ 프로그램은 여러 클래스들과 전역 함수들로 구성된다. 이들은 하나의 C++ 소스 팡일로 작성할 수도 있고 여러 소스 팡일로 자줄 수도 있다. 지금부터 바람직한 C++ 프로그램의 작성에 대해 알아보자. 1. 헤더 파일과 cpp 파일 분리 C++ 프로그램의 소스 코드는 다음과 같은 원칙으로 분리하여 작성하는 것이 바람직하다. - 클래스마다 선언부는 헤더 파일에, 구현부는 cpp 파일에 분리하여 작성한다.- main() 등 함수나 전역 변수는 한 개 이상의 cpp 파일에 나누어 작성한다. 클래스마다 클래스의 선언부와 구현부를 헤더 파일과 cpp 소스 파일로 분리하면 저체 프로그램을 관리하기 쉽고 클래스를 재사용하기 쉽기 때문이다. 클래스를 활용하는 코드들은 클래스에 대한 ..

C++/C++ 기본 2018.07.07

C++ 구조체

C++ 구조체 1. C++ 구조체 선언 C++에서는 C 언어와의 호환성을 위해 구조체(struct)를 지원한다. C++ 구조체는 표준 C 구조체에 기능을 확장하여 클래스와 동일한 구조와 기능을 가진다. C++ 구조체는 struct 키워드로 선언하며, 멤버 변수와 멤버 변수와 멤버 함수를 가지고, 접근 지정도 해야 한다. struct structName {//디폴트 접근 지정은 public이다. public 속성의 멤버 변수나 멤버 함수 선언private://private 속성의 멤버 변수나 멤버 함수 선언public://public 속성의 멤버 변수나 멤버 함수 선언protected://protected 속성의 멤버 변수나 멤버 함수 선언}; 2. C++ 구조체의 객체 생성 C++ 구조체의 객체 생성은 ..

C++/C++ 기본 2018.07.07

인라인 함수

인라인 함수 1. 함수 호출에 따른 시간 오버헤드 함수는 초기 컴퓨터 언어의 발달사에서 획기적인 발명품이었다. 적절한 단위 작업을 하나의 함수로 작성하여 두고 필요할 때마다 호출하여 실행할 수 있으므로, 함수는 프로그램을 구성하는 빌딩 블록(building block)의 역할을 하여 왔다. 개발자들은 늘 프로그램 코드를 어떻게 쪼개서 함수들로 만들지 궁리한다. 그러나 함수의 호출에는 대가가 따른다. 함수 호출과 실행을 마치고 돌아오는 과정에서 시간 소모가 발생한다. 함수 호출 오버헤드(overhead) 시간이 무시할 수 없는 비중을 파지하는 경우도 있다. 다음 예제 코드의 경우 1에서 10000까지 루프를 돌면서 홀수 합을 구하는 코드로서, 함수 호출에 따른 시간 오버헤드의 심각성을 보여준다. i.e.#..

C++/C++ 기본 2018.07.07

접근 지정

접근 지정자 객체 지향 언어에서는 객체를 캡슐화하고, 외부에서 접근 가능한 공개 멤버와 외부 접근을 허용하지 않는 비공개 멤버를 구분한다, C++에는 다음 3가지 멤버 접근 지정자(access specifier)가 있다. - public(공개)- private(비공개)- protected(보호) 멤버에 대한 접근 지정은 클래스 선언부에서 접근 지정자 다음에 콜론(:)을 찍고 멤버들을 선언하는 방식으로 이루어진다. i.e.class Sample {public://public 멤버들 선언private://private 멤버들 선언protected://protected 멤버들 선언}; - private 멤버 private 접근 지정으로 선언된 멤버들로서, 클래스 내의 멤버 함수들에게 접근이 허용된다. - pu..

C++/C++ 기본 2018.07.07

소멸자

소멸자 1. 소멸자란? 태어난 모든 생명체가 언젠가는 흙으로 돌아가는 것처럼, C++ 객체 역시 언젠가는 소멸된다. 객체가 소멸되면 객체 메모리는 반환된다. 또한 객체 생성 시 생성자 함수가 실행되는 것처럼 객체 소멸 시 소멸자 함수가 반드시 실행된다. 소멸자(destructor)는 객체가 소멸되는 시점에서 자동으로 호출되는 클래스의 멤버 함수이다. i.e.class Circle {Circle();Circle(int r);....~Circle(); //리턴 타입도 없고 매개 변수도 없다. 소멸자는 한 클래스에 오직 하나만 존재한다!}; Circle::~Circle() { //소멸자 함수 구현...} 소멸자의 특징은 다음과 같다. - 소멸자의 목적은 객체가 사라질 때 필요한 마무리 작업을 위함이다. 객체가..

C++/C++ 기본 2018.07.04

생성자

생성자 1. 생성자란? 객체를 생성할 때에 객체 그 자체와 객체의 멤버 변수등을 초기화 시켜줄 필요가 있다. C++에서 클래스는 객체가 생성될 때 자동으로 실행되는 생성자(constructor)라는 특별한 멤버 함수를 가지고 있다. 이 생성자를 사용하게 되면 객체를 생성할 수 있으며, 생성과 동시에 객체를 초기화 시켜 줄 수가 있다. 또한, 생성자를 이용해서 객체의 멤버 변수들을 원하는 값으로 초기화 시켜 줄 수도 있다. 한 클래스에 여래 개의 생성자를 넣을 수 있다. 그러나, 객체를 생성할 때에는 그 중에 오직 하나만 사용해서 생성한다. 어떤 생성자를 사용할 지는 객체를 생성할 때에 직접 선택할 수 있다. i.e.class Circle {......Circle(); //생성자의 이름은 클래스의 이름과 ..

C++/C++ 기본 2018.07.04

객체 생성과 객체 활용

객체 생성과 객체 활용 1. 객체 생성과 객체 이름 객체는 클래스 모양과 기능을 그대로 간직한 실체로서 이름을 가진다. 기본 타입의 변수를 선언하는 것과 같은 방법으로 객체를 생성하고 이름을 붙인다. 다음은 donut과 pizza라는 이름을 가진 Circle 클래스 객체를 생성하는 코드이다. i.e.int moiney; //int 타입의 변수 money 생성Circle donut; //Circle 클래스의 객체 생성. 객체의 이름은 donutCircle pizza; //Circle 클래스의 객체 생성. 객체의 이름은 pizza 변수가 생성되면 메모리에 변수 공간이 할당되는 것처럼, 객체가 생성되면 클래스 크기의 메모리가 할당된다. 자바에 익숙한 개발자들에게는 C++의 객체 생성 방식이 처음에는 매우 낯설..

C++/C++ 기본 2018.07.02

c++ 클래스 만들기

C++ 클래스 만들기 1. 클래스 만들기 C++에서는 class 키워드를 이용하여 클래스를 선언한다. C++ 클래스는 C 언어의 구조체와 같이 개발자가 정의하는 새로운 데이터 타입이다. C++ 클래스 내에는 멤버 변수와 멤버 함수가 선언될 수 있다. 아래의 예와 같이 클래스의 내용에 대해서 선언하는 부분을 클래스 선언부라고 부른다. i.e.class Circle {public:int radius; //멤버 변수double getArea(); //멤버 함수}; 클래스 선언부는 class 키워드로 클래스를 선언하며 시작한다. 자바와는 달리 각 멤버에 대한 접근 지정자를 한꺼번에 지정한다. 또한, 클래스 선언부는 블록이 끝난 후에 반드시 세미콜론으로 끝난다. 클래스를 선언하였으니 이제 구현을 할 차례이다. 선..

C++/C++ 기본 2018.07.02

C++ 클래스와 객체

C++ 클래스와 객체 - C++ 객체는 멤버 함수(행동)와 멤버 변수(상태)로 구성된다. C++에서 클래스란 객체를 정의하는 틀 혹은 설계도로서, 클래스에 멤버 변수와 멤버 함수를 선언한다. 클래스와 객체 관계는 붕어빵 틀과 붕어빵의 관계와 비슷하다. 붕어빵 틀은 C++ 클래스에, 붕어빵은 C++ 객체에 비유된다. C++ 객체는 C++ 클래스라는 틀에서 찍어내어, 멤버 변수 메모리와 멤버 함수 코드를 가지고 있으며, C++ 프로그램이 실행되는 동안 실존하는 실체이다. 이러한 객체는 인스턴스(instance)라고도 불리운다. 가끔 클래스와 객체를 같은 의미로 섞어 부르기도 하지만, 대화에 혼란을 가져오므로 정확하게 사용하는 것이 좋다. 절대 클래스를 객체라고 부르지 않도록 주의하라! 다음 예제는 C++ 언..

C++/C++ 기본 2018.07.02