분류 전체보기 250

#include <iostream>

#include #include 은 전처리기(C++ Preprocessor)에 대한 지시문으로서, C++ 소스 파일을 컴파일하기 전에 헤더 파일을 읽어 C++ 소스 파일 안에 삽입할 것을 지시한다. C++ 컴파일러는 처음에 전처리기를 호출하여 #include로 된 라인을 모두 처리하도록 한 후, C++ 소스 파일을 컴파일한다. 헤더 파일에는 C++ 표준 입출력을 위한 클래스와 객체가 선언되어 있으므로, 키보드 입력이나 화면 출력을 위해서는 이 헤더 파일가 포함하고 있는 내용이 꼭 필요하다. 다음 문장은 문자열을 화면에 출력하는 코드로서, cout 객체와

C++/C++ 기본 2018.06.29

main 함수

main() 함수 C 언어와 마찬가지로 main() 함수는 C++ 프로그램의 실행 시작점이다. C++ 프로그램에는 반드시 하나의 main() 함수가 존재해야 하며, main() 함수가 종료하면 프로그램이 종료된다. - main() 함수의 표준 형식 ANSI C++ 표준에서 정한 main() 함수의 리턴 타입은 다음과 같이 int이다. int main() { // ANSI C++표준의 메인 함수의 리턴 타입은 int.....return 0; // return 이 실행되면 main() 함수가 종료하고 프로그램이 종료된다. 필요에 따라 0이 아닌 값을 리턴할 수 있다.} 간혹 void를 리턴 타입으로 선언하기도 하는데, 이것은 C++ 표준이 아니다. 대부분의 컴파일러는 이를 문제 삼지 않지만 표준을 지켜주는 ..

C++/C++ 기본 2018.06.29

주석문

주석문 (Comment) 주석문은 프로그램의 실행에 영향을 미치지 않으며 개발자가 프로그램에 대한 설명이나 자유롭게 붙인 특이 사항의 메모이다. C++에는 주석문을 만드는 2가지 방법이 있다. 1. 여러 줄의 주석문을 만드는 것으로 /*와 */를 이용한다. i.e./* 주석 처리되는 문장. C++ 에서는 이렇게 여러 문장을 한꺼번에 주석 처리할 수 있다.*/ C++ 컴파일러는 '/*'와 '*/' 사이의 모든 내용을 주석문으로 처리하여 적법한 C++ 코드가 있어도 무시하고 컴파일하지 않는다. 2. 한 줄짜리 주석문으로 '//'를 이용한다. C++ 컴파일러는 소스에서 '//'를 만나면 그 행의 끝까지 주석문으로 처리하여 무시하고 넘어간다.

C++/C++ 기본 2018.06.29

C++ 언어의 아킬레스건

C++ 언어의 아킬레스건 C++ 언어는 C 코드와의 호환성이라는 중요한 목표로 설계되어, 기조의 C 코드를 재사용할 수 있게 되었지만, 그것으로 인해 객체 지향의 핵심 개념인 캡슐화(encapsulation)의 원칙이 다소 무너졌다. 캡슐화의 기본 원칙은 코드와 데이터를 외부의 접근으로부터 보호하기 위해, 변수와 함수를 캡슐 즉 클래스 안에 선언하도록 하는 강력한 원치이다. Java 언어는 이 원칙을 굳건히 지키고 있지만, C++에서는 C 언어로 작성된 프로그램을 수용하기 위해, 함수 바깥에 전역 변수를 선언할 수 있는 C 언어의 특성을 받아들일 수 밖에 없었다. 결국 이것 때문에, C++에서 클래스라는 캡슐 바깥에 함수나 전역 변수를 만들 수 있게 허용하였으며, C 프로그래밍에 있었던 전역 변수의 사용..

C++/C++ 기본 2018.06.29

C++ 언어의 특징

C++ 언어의 특징 1. C++ 언어의 설계 목표 C++ 언어의 기본적인 설계 목표에 대해서 알아보자. 1) C 언어로 작성된 프로그램과의 호환성(compatbility)을 유지한다. 기존에 작성된 C 프로그램을 그대로 사용할 수 있도록 C 언어의 문법적 체계를 그대로 계승한다. 또한, C 언어로 작성되어 컴파일된 목적 파일(object file)이나 라이브러리를 C++ 프로그램에서 링크하여 사용할 수 있도록 한다. 2) 소프트웨어의 재사용을 통해 소프트웨어 생산성을 높이고, 복잡하고 큰 규모의 소프트웨어 작성, 관리, 유지 보수를 쉽게 하기 위해서 데이터 캡슐화, 상속, 다형성 등의 객체 지향적 개념을 도입한다. 3) 타입 체크를 엄격히 하여 실행 시간 오류의 가능성을 줄이고 디버깅을 돕는다. 4) 실..

C++/C++ 기본 2018.06.29

접근 지정자

접근 지정자 객체 지향 언어에는 기본적으로 접근 지정자의 개념이 있다. 객체를 캡슐화하기 때문에객체에 다른 객체가 접근하는 것을 허용할 것인지 말지를 지정할 필요가 있기 때문이다. 자바에서는 다음 4가지 접근 지정 방식을 정의하고 있다 - public- protected- private- 접근 지정자 생략 = default 1. 클래스 접근 지정자 클래스 접근 지정이란, 다른 클래스에서 이 클래스 이름을 사용할 수 있는지에 대한 허용 여부를 지정하는 것을 말한다. 클래스 접근 지정자는 클래스의 선언 부분에 표시되며, public, private, 그리고 접근 지정자 생략 이렇게 총 3가지가 있을 수 있다. - publicpublic 접근 지정자로 선언된 클래스는 어떤 다른 클래스에서도 사용할 수 있다. ..

Java/Java 기본 2018.06.28

자바 레퍼런스와 가비지 컬렉션

자바 레퍼런스와 가비지 컬렉션 자바의 가비지 컬렉터는 그 동작 방식에 따라 매우 다양한 종류가 있지만, 기본적으로 모든 자바 가비지 컬렉터는 공통적인 2가지 작업을 수행한다고 볼 수 있다. 1. 힙 내의 객체 중에서 가비지를 찾아낸다.2. 찾아낸 가비지를 회수해서 메모리 공간을 확보한다. 초창기의 자바에서는 이 gc의 작업에 사용자가 개입하지 못하도록 구현이 되어 있었다. 그러나, JDK 1.2 버전 부터는 java.lang.ref 패키지 내의 클래스들을 이용해서 가비지 컬렉션에 사용되는 레퍼런스에 개입할 수 있도록 구현을 하면서, 자바 가비지 컬렉터와 사용자 사이의 상호작용이 가능하게 만들었다. 이 java.lang.ref 패키지 내에는 총 4가지 종류의 레퍼런스 클래스가 있다. 전형적인 객체 참조의 ..

Java/Java Tips 2018.06.28

AutoClosable에서 이용해서 리소스 사용 예외 처리하기

AutoClosable에서 이용해서 예외 처리하기 자바 7부터, 리소스가 AutoCloseable 인터페이스를 구현하는 클래스에 속하는 경우 다음과 같은 코드 패턴에 대한 유용한 단축 기능을 제공한다.(참고로, 자바에서 리소스란, 자바 응용프로그램 내에서 접근 가능한 데이터 조각을 의미한다. i.e. 클래스 등.. 일반적으로, Class 클래스나 ClassLoader 클래스의 메소드들을 이용해서 리소스에 접근한다.) //리소스 열기try {...//리소스를 이용해서 작업을 한다....} catch (Exception e) {...//리소스를 닫는다...} AutoCloseable 인터페이스는 다음과 같은 단일 메소드를 포함한다 : void close() throws Exception 이 메소드를 이용해서..

Java/Java Tips 2018.06.27