전체 보기342 6.C++의 기타 구문 C++에는 프로그램이 실행되는 동안에 사용자가 값을 입력시킬 수 있도록 하는 기능도 있다. 아래 코드에서 봐야 할 두 가지가 있다. 하나느 cin을 사용하여 키보드로부터 정수를 입력받는 것이고, 하나는 네 개의 출력을 하나로 이어 붙여 출력하는 것이다. int main() { using namespace std; int carrots; cout carrots; //C++ 입력 cout >은 carrots을 컴퓨터로 집어 넣고, cout 2022. 7. 20. 5.C++ 구문 C++ 프로그램은 함수들의 집합이고, 함수는 구문들의 집합이다. 아래의 코드에서 봐야 할 두 종류의 구문이 있다. 하나는 변수를 선언하는 선언 구문(declaration statement)이고, 다른 하나는 변수에 값을 대입하는 대입 구문(assignment statement)이다. int main() { using namespace std; int carrots; //정수 변수를 선언 carrots = 25; //변수에 값을 대입 cout 2022. 7. 20. 4.C++의 시작 프라모델을 만들 때 부품들이 하는 다양한 역할을 프로그램에서는 함수(function)가 담당한다. 일반적으로 프로그래머는 프로그램을 작성할 때 수행할 몇 가지 주된 작업을 나누고 분리된 작업들을 전담하여 처리하는 함수를 설계한다. main() 함수 main() 함수의 기본형은 아래와 같다. int main() { //구문들 return 0; } 1 번째 줄에 있는 in main() 이라는 부분은 함수 머리(function header)이고, 중괄호 { }로 묶여 있는 부분이 함수 몸체(function body)이다. 함수 머리는 이 함수를 프로그램의 다른 부분과 연결하는 고리 역할을 하고, 함수 몸체는 그 함수가 처리하는 동작들을 컴퓨터에게 지시하는 역할을 한다. 컴퓨터에게 내리는 지시(instructi.. 2022. 7. 20. 3.프로그램 작성 요령 C++로 작성한 프로그램을 어떻게 실행시킬까? C++ 컴파일러의 사용법에 따라 다르겠지만, 대략 다음과 같은 과정을 밟는다. 텍스트 에디터를 사용하여 프로그램을 작성하고 파일로 저장한다. 이 파일이 프로그램의 원시 코드 혹은 소스 코드(source code)이다. 소스 코드를 컴파일한다. 소스 코드를 컴퓨터 내부에서 사용하는 기계어로 번역해 주는 프로그램인 컴파일러를 실행한다는 뜻이다. 이렇게 번역된 파일이 목적 코드(obejct code)이다. 목적 코드에 부가적인 코드를 링크시킨다. C++ 라이브러리에는 함수라고 부르는 루틴들의 집합이 목적 코드 형태로 담겨 있다. 링커는 사용자가 만든 목적 코드와, 라이브러리 함수에 해당하는 목적 코드, 실행할 수 있는 프로그램을 만드는데 필요한 시동(start-u.. 2022. 7. 20. 2.이식성과 표준 이식성 Window 운영 체제 환경에서 개발된 C++ 프로그램이 Lunix나 Mac OS와 같은 다른 운영 체제에서 실행한다면 실행이 될까? 물론 새로운 플랫폼에 맞게 제작된 C++ 컴파일러를 사용해서 재 컴파일을 해야 할 것이다. 이때 재 컴파일러만 하고 소스 코드는 수정하지 않아도 될까? 만약 소스 코드를 수정하지 않고 재 컴파일 만으로 제대로 실행이 된다면, 프로그램이 이식성(Portable)이 있다고 한다. 프로그램이 이식성을 갖기 위해서 두 가지 장애 요인이 있다. 특정 하드웨어에 종속된 프로그램은 이식성을 갖지 못한다. 프로그래밍 언어 간의 상이성 특정 하드웨어의 종속 문제는 예를 들어, PC에서 플레이하는 게임 파일을 그대로 휴대폰으로 옮긴다고 해서 휴대폰에서 게임을 실행할 순 없다. 프로그.. 2022. 7. 20. 1.C++의 탄생: 간략한 역사 1970년대에 C나 Pascal과 같은 컴퓨터 언어들이 등장하여 구조적 프로그래밍의 시대를 열었다. C 언어는 구조적 프로그래밍 뿐만 아니라, 통신 포트나 디스크 드라이브와 같은 하드웨어까지 직접 제어할 수 있었다. 추후 SmallTalk나 C++와 같은 언어로 구현하는 객체 지향 프로그래밍(Object-Oriented Programing : OPP)이 출현했다. C 언어 1970년대 초반 벨 연구소(Bell Laboratories)의 Dennis Ritchie는 Unix라는 운영 체제를 개발하는 프로젝트를 수행하다 크기가 작고 빠르게 실행되는 프로그램을 작성할 수 있고, 하드웨어를 효율적으로 제어할 수 있는 언어가 필요했다. 당시 이런 요구를 충족할 수 있는 어셈블리 언어가 있었으나, 어셈블리 언어는 .. 2022. 7. 20. 81.클래스 설계 복습 C++은 다양한 곳에 사용되기 때문에 클래스 설계를 한정지어 몇 가지로 줄일 수 없다. 하지만 몇 가지의 설계 지침이 있다. 컴파일러가 자동으로 생성하는 멤버 함수들 컴파일러는 명시적으로 선언하지 않아도 자동으로 생성하는 멤버 함수들 6가지가 있다. 기본 생성자 소멸자 복사 생성자 복사 대입 연산자 이동 생성자 이동 대입 연산자 이중 소멸자를 제외한 나머지는 public 멤버 함수로 생성된다. 기본 생성자는 매개변수를 사용하지 않거나, 모든 매개변수가 디폴트 값으로 사용하는 생성자이다. 프로그래머가 생성자를 선언했다면, 컴파일러는 기본 생성자를 만들지 않는다. 생성자를 정의하는 이유 중의 하나는, 객체가 바르게 초기화되도록 하기 위함이다. 또한 클래스가 포인터 멤버를 갖고 있을 경우 확실하게 초기화되어야.. 2022. 7. 19. 80.상속과 동적 메모리 대입 상속은 동적 메모리 대입(동적 할당, 해제)과 어떤 관계를 맺을까? 정답은 파생 클래스의 성질에 따라 다르다. 아래와 같은 기초 클래스가 있다고 가정해보자. class BaseClass { public: BaseClass(const char* l = "null", int r = 0); //생성자 BaseClass(const BaseClass& rs); //복사 생성자 virtual ~BaseClass(); //소멸자 BaseClass& operator=(const BaseClass& rs); //대입 연산자 }; 위 기초 클래스를 파생하는 클래스의 상황에 따라 취할 수 있는 조치에 대해 알아보자. case 1 - 파생 클래스가 new를 사용하지 않는다. 위 클래스를 파생하는 파생 클래스는 new를 사용하.. 2022. 7. 18. 79.추상화 기초 클래스 추상화 기초 클래스(abstract base class : ABC)는 공통된 부분이 많지만, 어느 한 쪽에 속하지 않는 관계일 때, 공통된 멤버들만으로 정의한 클래스를 의미한다. 언제 사용할 수 있을까? public 상속일 때, is-a 관계로 예를 들어보자. 타원과 원을 생각해봤을 때, 타원이란 장경과 단경의 길이가 다른 것을 의미하고, 원은 장경과 단경이 같은 원을 의미한다. 즉, 원은 타원에 포함되어 있다. 따라서 public 상속으로 설계할 수 있는데 이는 많은 문제점이 발생한다. class Ellipse { public: ... void Move(int nx, int ny) { x = nx; y = ny; } virtual double Area() const { return 3.14159 * a.. 2022. 7. 14. 이전 1 2 3 4 5 6 7 8 ··· 38 다음