![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cuUEef/btquugBmxR2/xEOCOSRY3tH06wd8nVfXn0/img.jpg)
메뉴를 읽어 음료 정보를 출력하고 검색하는 프로그램이다. 실행화면은 다음과 같다. 검색은 여러 개의 키워드에 모두 매치되는 것만 출력한다. (1) Drink.h 음료 클래스 Drink의 헤더 파일 #pragma once #include #include #include #include using namespace std; class Drink { // Co1 카페_아메리카노 Short 3.6 string code; string name; string size; int price; public: int salesCnt; void read(ifstream& fin); void print(); bool matches(string kwd); int getPrice() { return price; } string ..
여기서는 파일에서 학생 데이터를 읽어 객체로 저장하는 방법을 살펴본다. 실행결과는 다음과 같다. 입력파일에는 학번 이름 학과 학년 그리고 점수 여러 개가 나오는 여러 줄의 데이터가 들어있다. 그런 정보를 읽어서 아래와 같이 출력하는 프로그램을 작성하고 싶다. 산업경영공학과201222028최은서3 5 4 3 3 1 4 컴퓨터과학과201722825임소정1 3 2 3 2 컴퓨터과학과201222209남정수2 7 6 6 6 6 4 3 2 [201222028] 최은서 산업경영공학과 (3학년) - [4, 3, 3, 1, 4] [201722825] 임소정 컴퓨터과학과 (1학년) - [2, 3, 2] [201222209] 남정수 컴퓨터과학과 (2학년) - [6, 6, 6, 6, 4, 3, 2] 먼저 파일명을 입력받아 그..
다음은 자바 코드를 C++로 바꾸는 과정을 보여줍니다. 이 프로그램은 Item 클래스를 이용해서 제품을 나타내고 Store 클래스는 그것을 이용해서 제품 데이터를 읽어들이고 출력한 후 주문을 받아 주문 내역을 출력합니다. 그리고 주문이 끝나면 그날의 매출 통계를 출력해 줍니다. 먼저 입출력의 형식을 살펴봅시다. 입력은 상품의 개수와 상품별로 이름, 가격, 종류(성별)이 나옵니다. 이것을 출력할 때는 상품의 고유번호를 보여주고 이름, 종류, 가격 순으로 보기 좋게 출력합니다. 11 후드티_ST1 5000 f 후드티_ST2 10000 c 면티_ST1__ 5000 f 면티_ST2__ 10000 f 면티_ST3__ 8800 c 치마_주름_롱 10000 f 치마_주름_숏 8000 f 반바지_청_숏 12000 f ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/GilKk/btqubCvXk4o/UizcORIxYhvvxnS6qkbanK/img.jpg)
C++이 자바와 가장 크게 달라지는 부분이 객체의 생성과 사용에서 객체 변수를 이용할 때이다. 자바는 모든 클래스 타입의 변수는 반드시 참조를 가진다. 또한 참조되는 객체는 항상 힙 메모리에 존재한다. 이것은 스택 영역의 관리와 메모리 가비지컬렉션을 쉽게 해주지만 대신 객체를 사용할 때 항상 간접접근(참조를 한번 읽어오고 해당 객체를 또 읽어와야 되는 이중 로드)해야 하는 문제가 생긴다. 이것은 상당한 성능 상의 부담을 가져온다. C++은 성능을 최적화하기 위해 (또 C의 구조체의 개념을 그대로 가져왔기 때문이기도 하다) 언제든 객체 변수를 선언할 수 있다. 예를 들어 Student 클래스에 대해 다음의 지역변수 선언은 객체를 스택 영역에 하나 생성하고 st라는 이름으로 그 객체를 나타낸다. (이것은 자..
C++의 큰 특징 중 하나로 참조형을 들 수 있다. 이것은 C와도 다르고 자바와도 다른 상당히 독창적인 기능을 제공한다. 참조형은 객체의 매개변수 전달이나 반환형 등에서 강력한 기능을 제공하여 C++의 세련된 코드를 가능하게 한다. 먼저 참조형이 무엇인지 살펴보자. 참조형이란 포인터와 비슷하게 뭔가를 가리키는 변수를 선언할 수 있게 해준다. 자바의 객체 참조 변수와 비슷한데 C++의 참조형은 포인터가 그렇듯이 기본 타입도 가리킬 수 있다. 또한 그 변수에 할당된 공간을 바로 가리켜서 자바와는 다른 용법으로 사용된다. int a; int& aRef = a; int* aptr = &a; aptr와 같이 aRef는 a에 할당된 공간을 가리킨다. 그렇지만 초기화할 때 aRef는 a 그 자체를 참조하는 것처럼 지..
C++은 cout
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/NuegV/btqtS7ybOPb/jNgL95g4DNhFSNLJUAJaa0/img.jpg)
C++ 프로그램은 사실 C 프로그램과 다를 바 없다. 그냥 확장자를 cpp로 바꾸어 C 프로그램 그대로 C++ 프로그램이라고 해도 컴파일이 잘 된다. 그러나 C++ 프로그램다우려면 클래스가 필요하다. 여기서는 간단한 클래스 프로그램을 한번 만들어보겠다. C++ 프로그램은 C처럼 파일 안에 전역변수와 함수가 나올 수 있고 반드시 main() 함수를 가져야 한다. 또한 클래스 선언부가 나올 수 있다. 다음과 같이 하나의 파일에 모두 모여있다면 자바와 비슷하게 생긴 클래스가 나오고 그것을 사용하는 main 함수가 나오게 된다. 여기서 주의할 점은 class 선언부 뒤에 ;(세미콜론)이 있어야 한다는 점이다. 그런데 좀 이상한 일이지만 void read() { ... } 다음에는 세미콜론이 필요하지 않다. 이것..
C++ 언어를 배워야 할 일이 가끔 생깁니다. 취업 준비를 위해서나 C/C++ 환경이 필요한 일을 할 때가 있겠지요? 좋은 소식은 C와 자바를 할 줄 안다면 C++ 배우는 것은 그리 큰 일은 아니라는 것입니다. 물론 깊이 들어가면 많이 다르고 어려워지지만 가볍게 할 줄 아는 정도라면 며칠이면 배울 수 있습니다. 당신의 언어 툴박스에 C++을 추가해 보는 것이 어떨지요? 자 이제 시작합시다. C++은 C에다 객체지향 기능을 추가한 언어입니다. 그래서 진지하게 이 언어를 제대로 배우려면 사실 C 전부에다가 그 정도 양을 더 공부해야 할 정도로 크고 복잡한 언어입니다. 그러나 C를 이미 알고 자바의 객체 지향도 안다면 다행히도 간단히 해볼 수 있는 지름길이 있습니다. C++은 C와 자바가 갖지 않은 새로운 개..
프로그램 안에서 쓰이는 이름 선언에서 변경될 수 없는 객체로 선언되는 것들이 있다. 자바의 final 키워드와 C/C++의 const 키워드가 그런 선언을 위한 키워드다. 그런데 이 키워드의 사용이 생각보다 까다롭다. 그리고 변경할 수 없는 이름 중에는 컴파일러에 의해 상수로 처리되는 경우도 있다. 이들의 응용법과 차이를 이해하는 것은 프로그래밍 언어에서 중요한 주제다. 먼저 이런 값을 변경할 수 없는 변수 이름이 어떤 경우에 쓰이는지 생각해 보자. 값을 저장하기 위해 사용하는 것이 변수인데 값을 변경할 수 없게 선언하는 이유는 무엇인가? 우리는 일상 생활에서도 정해진 값을 사용하는 경우가 많다. 지하철 역 번호나 버스 정류장 번호 등은 아마도 한번 정해지면 바뀌지 않을 것이다. 온라인쇼핑몰이라면 쇼핑몰..
폰뉴만 아키텍처의 프로그램이 동작하는 방식을 이해하기 위해 호출스택을 알아야 한다. 호출스택이란 함수가 호출되는 과정에서 데이터가 스택의 형태로 쌓이고(push) 팝되는 영역을 말한다. 프로그램의 메모리는 다음의 세 가지 영역으로 나누어진다. 정적 영역 : 프로그램이 실행을 시작할 때 일정 크기가 할당되어 프로그램이 끝날 때까지 유지되는 메모리 영역으로 주로 전역변수나 정적 변수가 저장되는 영역이다. 프로그램 코드 상에 나타나는 리터럴(상수값)도 여기에 저장된다. 스택 영역 : 함수의 매개변수와 지역변수들이 저장되는 영역이다. 스택은 함수가 호출될 때 그 함수의 매개변수와 지역변수를 저장할 영역이 할당되고 그 영역은 함수가 리턴될 때 팝된다. 함수가 호출되고 거기서 다른 함수가 또 호출되면 스택이 푸시된..
- Total
- Today
- Yesterday
- comparable
- CompareTo
- 스트링 +
- 이터러블
- follow
- 동적바인딩
- ToString
- max
- contentEquals
- 콜렉션
- sort key
- 자바regex
- format
- contains
- python example
- Iterator
- 이터레이터
- python exercise
- zip
- C++ 클래스
- Camel Style
- 지연계산
- typedef
- 패턴
- rust
- Lazy evaluation
- 스트링
- APPEND
- TypeError
- indexof
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |