본문 바로가기

Programming42

[C++] 복소수 Complex 연산 클래스 만드는 방법 ▣ 복소수(complex number) ● 복소수는 실수부와 허수부로 구성된다. ▷ 복소수의 표현 : a + jb ( a : 실수부 값, b : 허수부 값) ● 켤레복소수 (complex conjugate) ▷ 켤레복소수의 표현 : a - jb (허수부의 부호가 반대) ● 복소수 연산 ▷ 덧셈은 쉬우니까 넘어가고 ▷ 곱셈은 (a + jb)(d + je) = (ad - be) + j(ae + bd) ▷ 나눗셈은 (a + jb) / (d + je) = (ad + be) / (d^2+e^2) + j (bd - ae) / (d^2+e^2) ▣ 복소수 클래스 ● Complexx 클래스 ▷ 복소수를 표현하는 클래스 ▷ 복소수의 사칙연산과 켤레복소수를 구하는 멤버함수를 갖고 있다. ▷ 실수부의 값이 a, 허수부의 값.. 2020. 8. 28.
[C++] 자료구조 스택 Stack 구현하기 ▣ 스택 Stack은 뭔가? ● 데이터를 저장하는 자료구조의 한 종류이다. ● 스택의 기본 연산 ▷ push: 데이터를 저장하는 연산 ▷pop: 마지막으로 저장한 데이터를 인출하는 연산 ▷ LIFO : Last Input First Out ▣ 예제 - CharStack 클래스 ● CharStack 클래스 ▷ a문자를 최대 20개까지 저장할 수 있는 스택을 나타내는 클래스 ▷ 스택 객체는 데이터를 저장(push)하고 인출(pop)한다. ▷ 스택이 비었는지 가득찼는지 검사할 수 있다. ▷ 스택을 이용해서 입력된 단어를 역순으로 출력하는 프로그램을 만든다. 멤버함수 비고 CharStack( ) 생성자 bool chkEmpty( ) 스택이 비었는지 검사 bool chkFull( ) 스택이 가득찼는지 검사 boo.. 2020. 8. 28.
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.
반응형