본문 바로가기

전체 글121

C++ 언어 기초 (8) - static 데이터 멤버와 static 멤버함수 ▣ 객체의 메모리 공간 ● 객체를 저장하기 위한 메모리 공간 ▷ 일반적으로 객체마다 개별적으로 데이터 멤버가 메모리 공간을 할당받아 각각 존재한다. 멤버함수는 재호출이 가능한 구조이기 때문에 객체마다 개별적으로 멤버함수를 가질 필요 없이 공유해서 사용한다. ▷ 때에 따라 클래스 전체에 속하는 데이터 멤버를 사용하고 싶을 때도 있다. --> static 데이터 멤버 ● static 데이터 멤버 ▷ 클래스에 속하는 모든 객체들이 공유하는 데이터 멤버 ▷ 객체 생성과 관계 없이 프로그램이 시작되면 static 데이터 멤버를 위한 메모리 공간이 할당된다. ▷ 일반 데이터 멤버와는 달리, static 데이터 멤버는 클래스 선언문 내에서는 선언만 하고 클래스 외부에서 별도로 정의해야 한다. ▷ static 데이터 .. 2020. 8. 28.
C++ 언어 기초 (7) - 디폴트/복사/이동 생성자 ▣ 디폴트 생성자 ● 디폴트 생성자(default constructor)란? ▷ 매개변수가 없는 생성자, 또는 모든 매개변수에 디폴트 인수가 지정된 생성자 ▷ 클래스 선언 시 생성자를 선언 안하면 컴파일러가 알아서 디폴트 생성자를 정의해준다. ▷ 생성자를 하나라도 선언하면 컴파일러는 묵시적으로 디폴트 생성자 정의하지 않는다. ● 묵시적 디폴트 생성자 ▷ 클래스 내에 생성자를 따로 선언해주지 않아도 컴파일러가 알아서 Counter(){ } 과 같이 묵시적 디폴트 생성자를 만들어준다. 클래스 외부에서 객체를 만들 때도 Counter cnt; 와 같이 매개변수 없이 만들 수 있다. /* Counter.h */ class Counter{ int value; public: //Counter() {} //생성자를 .. 2020. 8. 28.
[C++] const 사용 시 주의점 오늘은 클래스 선언할 때 const를 써서 데이터를 보호하고자 하지만 썻다가 디버깅 지옥에 빠지는 경우를 소개하려고 합니다. 이전 포스트에서 만보기 예제를 다뤘는데, 그 예제를 이번에도 예로 들어서 설명하고자 합니다! 아래 포스트를 참고해주세요. 2020/08/27 - [Programming/C++] - [C++] 헤더파일(.h) 내용 중복 include 방지 방법 먼저, 만보기 프로그램 작성을 위한 Counter 클래스를 선언합니다. ● Counter.h #ifndef COUNTER_H_INCLUDED #define COUNTER_H_INCLUDED class Counter { //클래스 Counter의 선언 int value; //private 데이터멤버 public: //public 멤버함수 voi.. 2020. 8. 27.
[C++] 헤더파일(.h) 내용 중복 include 방지 방법 .h 헤더파일 내용이 중복되면 컴파일 에러가 발생한다. 이걸 방지하기 위해 사용되는 방법들을 알아보겠다. 먼저, 만보기 프로그램을 만든다고 생각해보자. 만보기에는 두 가지 버튼이 있다. 리셋 버튼과 숫자를 세는 버튼, reset & count 버튼으로 구성됐다고 하자. 이 프로그램을 만들기 위해 만보기의 기본적인 기능을 가지는 클래스인 Counter 클래스를 만들어보자. ● Counter 클래스 명세 만보기를 나타내는 클래스를 선언한다. 만보기 객체는 값을 0으로 지울 수 있고, 값을 1씩 증가시킬 수 있고, 현재 만보기의 값을 알려주는 기능이 있어야 한다. ▷ 행위 메소드 비고 void reset() 만보기의 값을 0으로 초기화한다. void count() 만보기의 값을 +1 증가시킨다. int get.. 2020. 8. 27.
C++ 언어 기초 (6) - 클래스와 객체 ▣ 객체지향 프로그래밍? ● 객체(object)란? ▷ 소프트웨어 시스템 안의 어떠한 대상을 표현한 것으로 다음의 역할을 수행한다. 정해진 처리를 수행한다. --> 행위, 메소드, 멤버함수 처리 과정에 따라 내부 상태가 변화할 수 있다. --> 속성, 데이터 멤버 다른 객체와 상호작용 할 수 있다. --> 메시지 전달(멤버함수 호출) ▷ 아래의 포스트에서 정의했던 원 객체를 예로 들면 다음과 같이 역할에 따라 분류할 수 있다. 2020/08/26 - [Programming/C++] - [초급] C++ 언어 기초 (3) - 구조체와 클래스 행위: init(), area(), display(), chkOverlap() 속성: center, radius ● 클래스(class)란? ▷ 객체의 설계도로 객체가 포.. 2020. 8. 27.
C++ 언어 기초 (5) - 함수 ▣ 함수의 정의와 호출 ● 함수(function)란? ▷ 필요한 작업을 수행하는 프로그램 문장들을 하나의 단위로 모아 놓고 이름을 부여한 것을 말한다 ● 함수 정의 형식 ReturnType functionName(fParameterList) // 머리부 { // 몸체 블록 Type localVar1; // 지역변수 선언 Type localVar2; ... statement1; // 처리할 작업을 수행하는 문장 statement2; ... return returnExpression; // 결과값을 반환 ● return 명령? ▷ 함수를 마치고 함수를 호출한 곳으로 복귀하는 명령 ▶ 함수 안의 어느 곳이든 복귀를 위해 사용 가능 ▷ 반환값이 없는 함수의 ReturnType은 void로 선언 ▶ main 함수.. 2020. 8. 26.
반응형