[C++] 따라하며 배우는 C++ - (14) 예외 처리
2020. 5. 5. 19:23
C++/따라하며 배우는 C++
예외처리의 기본 #include #include #include using namespace std; int findFirstChar(const char * string, char ch) { for (std::size_t index = 0; index < strlen(string); ++index) if (string[index] == ch) return index; return -1;// no match } // 리턴값을 bool로 처리할 수도 있음 double divide(int x, int y, bool &success) { if (y == 0) { success = false; return 0.0; } success = false; return static_cast(x) / y; } int mai..
[C++] 따라하며 배우는 C++ - (13) 템플릿
2020. 5. 4. 13:59
C++/따라하며 배우는 C++
함수 템플릿 프로그래머의 단순 반복 작업을 줄여 주기 위한 장치가 있다. 템플릿은 여러 가지 자료형에 대해서 비슷한 코드를 반복하는 것을 방지해 준다. Cents.h #pragma once #include class Cents { private: int m_cents; public: Cents(int cents) : m_cents(cents) { } friend bool operator > (const Cents &c1, const Cents &c2) { return (c1.m_cents > c2.m_cents); } friend std::ostream& operator
[C++] 따라하며 배우는 C++ - (12) 가상 함수들
2020. 5. 3. 20:28
C++/따라하며 배우는 C++
다형성의 기본 개념 자식 클래스 객체에 부모 클래스 포인터를 사용한다면? #include #include using namespace std; class Animal { protected: string m_name; public: Animal(std::string name) : m_name(name) {} public: string getName() { return m_name; } //void speak() const virtual void speak() const { cout
[C++] 따라하며 배우는 C++ - (11) 상속
2020. 5. 2. 19:14
C++/따라하며 배우는 C++
상속의 기본 (1) Inheritance(is-a relationship) #include using namespace std; class Mother// generalized class { private:// 자식한테도 허용X //public:// 다 열어 버림 //protected:// private 상태를 유지하면서 자식에게는 허용 int m_i; public: Mother(const int & i_in) : m_i(i_in) { std::cout
[C++] 따라하며 배우는 C++ - (10) 객체들 사이의 관계에 대해
2020. 4. 30. 01:36
C++/따라하며 배우는 C++
객체들의 관계 1. 프로그램이 수행해야 하는 기능 정하기 2. 어떤 객체들이 어떻게 나눠서 도움을 주고받을지 설계 3. 설계에 따라서 여러 클래스를 구현 구성(요소) 관계 Composition Part-of 두뇌는 육체의 일부이다. 육체 없이는 존재할 수 없으며, 두뇌가 육체 전체에 대해 알고 있지는 않다. 전체/부품 - 육체/두뇌 다른 클래스에도 속할 수 없음 - 두뇌는 다른 클래스에 속할 수 없음 멤버의 존재를 클래스가 관리함 - 두뇌를 육체가 관리함 단방향 Position2D.h #pragma once #include class Position2D { private: int m_x; int m_y; public: Position2D(const int & x_in, const int & y_in) :..
[C++] 따라하며 배우는 C++ - (9) 연산자 오버로딩
2020. 4. 27. 21:44
C++/따라하며 배우는 C++
산술 연산자 오버로딩 하기 #include using namespace std; // 사용자 정의 자료형에서도 산술 연산자 정의 가능 class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() const { return m_cents; } int& getCents() { return m_cents; } //friend Cents operator + (const Cents &c1, const Cents &c2) //{ //return Cents(c1.getCents() + c2.getCents()); //} // friend 없애고 멤버 함수로 사용하려면... this 사용 // 멤버 ..
[C++] 따라하며 배우는 C++ - (8) 객체지향의 기초
2020. 4. 25. 02:37
C++/따라하며 배우는 C++
객체지향 프로그래밍과 클래스 #include #include #include using namespace std; // Friend: name, address, age, height, weight, ... void print(const string &name, const string &address, const int &age, const double &height, const double &weight) { cout
[C++] 따라하며 배우는 C++ - (7) 함수
2020. 4. 23. 17:10
C++/따라하며 배우는 C++
매개변수와 실인자의 구분 매개변수(Parameter) 인자(Argument) #include using namespace std; int foo(int x, int y); // parameter: 함수가 어떤 기능을 하는지, 바꿔 주는 역할 int foo(int x, int y) { // like... int x, y; return x + y; } // x and y are destroyed here, 함수가 끝남과 동시에 소멸됨 int main() { int x = 1, y = 2; foo(6, 7);// 6, 7: arguments (actual parameters) foo(x, y + 1);// x에 있는 값이 argument로, 함수의 parameter로 들어간다 // 항상 x에 있는 값만 전달되..
[C++] 따라하며 배우는 C++ - (6) 행렬, 문자열, 포인터, 참조
2020. 4. 22. 21:24
C++/따라하며 배우는 C++
배열 기초 array #include using namespace std; #define D_NUM_STUDENTS 100000 struct Rectangle { int length; int width; }; enum StudentName { JACKJACK,// = 0 DASH,// = 1 VIOLET,// = 2 NUM_STUDENTS,// = 3 }; int main() { /* int student1_score;// jack jack int student2_score;// dash int student3_score;// violet */ int one_student_score;// 1 variable int student_scores[5];// 5 int cout
[C++] 따라하며 배우는 C++ - (5) 흐름제어
2020. 4. 20. 21:57
C++/따라하며 배우는 C++
제어 흐름 개요 Control flow CPU가 해야 할 일을 조금 더 복잡하게 만들어 줄 수 있음, 흐름을 제어할 수 있음 순서도(Flow Chart) 1. 중단(Halt) 2. 점프(Jump): goto, break, continue 3. 조건 분기(Conditional branches): if, switch 4. 반복(루프)(Loops): while, do-while, for 5. 예외 처리(Exceptions): try, catch, throw #include #include // exit int main() { using namespace std; cout x; if (x > 10) { cout
[C++] 따라하며 배우는 C++ - (4) 변수 범위와 더 다양한 변수형
2020. 4. 18. 19:15
C++/따라하며 배우는 C++
지역 변수, 범위, 지속 기간 지역 변수 범위(scope): 어디서 사용할 수 있고, 없는가 지속기간(duration): 메모리를 반납 보통 함께 묶어서 생각하는 것이 일반적이나 동적 할당을 할 때는 범위와 지속기간이 분리된다. #include namespace work1 { namespace work11 { namespace work111 { int a = 1; void doSomething() { a += 3; } } } int a = 1; void doSomething() { a += 3; } } //namespace work1::work11::work112 { //컴파일러 17버전부터 가능하나 적게 들어가는 것이 좋다 //} namespace work2{ int a = 1; void doSomet..
[C++] 따라하며 배우는 C++ - (3) 연산자들
2020. 4. 16. 22:40
C++/따라하며 배우는 C++
연산자 우선순위와 결합 법칙 연산자 종류 및 우선순위 https://ko.wikipedia.org/wiki/C%EC%99%80_C%2B%2B%EC%9D%98_%EC%97%B0%EC%82%B0%EC%9E%90 C와 C++의 연산자 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 이것은 C와 C++ 프로그래밍 언어의 연산자의 목록이다. 나열된 모든 연산자는 C++에 존재한다. 네번째 열("C에 포함됨")은 해당 연산자가 C에 존재하는지를 표시한다. C는 연산자 오버로딩을 지원하지 않는다. 연산자가 오버로드되지 않았다면, &&, ||, ,(쉼표 연산자) 연산자는 첫 번째 피연산자(operand)가 평가된 시점이 시퀀스 포인트이다. C++는 형 변환 연산자인 ..
[C++] 따라하며 배우는 C++ - (2) 변수와 기본적인 자료형
2020. 4. 14. 23:37
C++/따라하며 배우는 C++
기본 자료형 소개 Fundamental Data Types 자료형: 자료의 형태 int i = 1; -> 초기화, 객체지향으로 넘어가면 매우 중요하다. 정수, 실수, 문자, 불리언 등 여러가지 자료형이 있고, 메모리에 저장된다. 각 자료형마다 사이즈가 다르다. 저장 방식도 타입마다 조금씩 다르다. 문장을 저장하려면 String을 사용한다. 기본 데이터 타입은 아니나, 표준처럼 사용되는 경향이 있다. 음수가 가능한 타입은 signed, 가능하지 않은 타입은 unsigned. unsigned의 처리 속도가 더 빠른 경우가 있다. 컴파일러에 따라서 사이즈가 달라질 수 있다. 정해진 메모리에 담을 수 있는 사이즈만 담을 수 있다. 최근에는 사용하기 직전에 변수를 선언하는 것을 선호한다. 1. 디버깅 편리 2. ..
[C++] 따라하며 배우는 C++ - (1) C++의 기본적인 사용법 ③
2020. 4. 13. 18:53
C++/따라하며 배우는 C++
연산자와의 첫 만남 리터럴(Literal) 피연산자(Operand) 단항(unary), 이항(binary), 삼항(ternary) #include using namespace std; int main() { int x = 2;// x is a variable, 2 is a literal. / assignment: = cout
[C++] 따라하며 배우는 C++ - (1) C++의 기본적인 사용법 ②
2020. 4. 12. 22:14
C++/따라하며 배우는 C++
변수와의 첫 만남 객체(objects): 메모리에 저장이 돼 있는 정보가 객체로써 존재함 변수(variables): 수학에서 얘기하는 변수처럼 기능하나, 내부적으로 작동할 때는 메모리에 담겨 있는 객체의 이름 Left-values / Right-values: 메모리 변수에 직접 접근할 수 있느냐 초기화(initialization)와 대입(assignment) 초기화를 안 했을 때의 문제점 #include int main() { int x;// X: 메모리에 있는 어떠한 공간의 이름, 정수 하나 담을 크기(integer) x = 123;// =: assignment operator, '대입' x = x + 2;// 우측의 x는 R-value std::cout
[C++] 따라하며 배우는 C++ - (1) C++의 기본적인 사용법 ①
2020. 4. 11. 23:43
C++/따라하며 배우는 C++
프로그램의 구조 (표현)식 - Expressions 명령문 - Statements 함수 - Functions 라이브러리, 표준 라이브러리 OS는 프로그램을 실행할 때 먼저 main function을 찾는다. 빈칸이나 빈 줄은 컴파일러가 무시한다! 프로그래머의 편의를 위한 것이다. 기능을 수행하는 문장을 Statement, return 0;는 return 기능을 하고 있기 때문에 return statement라고 부른다. 명령문의 마지막에 세미콜론(;)을 반드시 쓴다. #include /* preprocessor directive #: 전처리기 iostream: input output stream */ int main(void) { (1 + 2) * (3 + 4);// expression int x = 2..
[C++] 따라하며 배우는 C++ - (0-4) 통합개발환경의 기본적인 사용법
2020. 4. 10. 00:24
C++/따라하며 배우는 C++
윈도우 비주얼 스튜디오 설치 비주얼 스튜디오 2017 다운로드 - https://visualstudio.microsoft.com/ko/vs/older-downloads/ Visual Studio 이전 다운로드 - 2017, 2015 및 이전 버전 Visual Studio Community, Professional 및 Enterprise 소프트웨어의 이전 버전을 다운로드하세요. 여기서 Visual Studio(MSDN) 구독에 로그인하세요. visualstudio.microsoft.com 설치 시 C++를 사용한 데스크톱 개발(Desktop development with C++)을 체크하여 필수로 설치해야 한다. Hello, World! Create directory for solution: 한 프로젝트 ..
[C++] 따라하며 배우는 C++ - (0-3) 프로그래밍 과정 소개
2020. 3. 27. 20:16
C++/따라하며 배우는 C++
프로그래밍 과정 1. 풀어야 할 문제를 정의한다. - 무엇을 만들고 싶은지, 세부 기능이 어떻게 되는지 정리 2. 해법을 설계한다. - 어떻게 만들 것인지 계획을 꼼꼼하게 단계별로 세움 3. 해법을 구현하는 프로그램을 작성(Write)한다. - 생각한 대로 프로그램을 작성함, '코드를 Write한다' 4. 프로그램을 컴파일(Compile)한다. - 소스파일(.cpp) > 컴파일 > 오브젝트 파일(.o, .obj) 5. 오브젝트(Object) 파일들을 링킹(Linking)한다. - 다양한 오브젝트 파일을 합쳐서(링커) 실행 파일 생성 6. 테스트해 보고 문제가 있으면 고친다. - 디버깅(Debugging) ※ 런타임 서포트(Runtime Support): 모든 일을 전부 직접 소스 코드에서 짤 필요가 없다..