목록프로그래밍 (13)
디필의 요모조모
C++의 인자 전달 방식 ‘값에 의한 호출’, ‘주소에 의한 호출’, ‘참조에 의한 호출’의 3가지가 있다. ‘값에 의한 호출’시 실인자의 값이 매개 변수에 복사되어 전달되므로, 매개 변수와 실인자는 메모리를 서로 공유하지 않는다. 그러므로 함수 내에서 매개 변수의 값을 변경해도 실인자의 값이 바뀌지 않는다. 객체가 ‘값에 의한 호출’로 전달되면 매개 변수 객체의 생성자는 실행되지 않고 소멸자만 실행되는 문제가 발생한다. ‘참조에 의한 호출’은 원본에 대한 참조만 전달되므로 함수 내에서 참조 매개 변수를 이용하여 원본 데이터를 읽고 수정할 수 있다. 객체 치환 및 객체 리턴 치환 연산자(=)로 객체를 치환하면, 비트 단위로 객체가 복사된다. C++ 함수는 객체를 리턴할 수 있다. 이때 객체의 복사본이 만..
객체 포인터 C++에서는 객체의 주소를 가지는 객체 포인터를 선언하고 활용할 수 있다. 객체 포인터로 객체의 멤버에 접근할 때 -> 연산자를 사용한다. 초기화되지 않는 객체 포인터를 사용하면 null pointer assignment 실행 오류가 발생한다. 객체 배열 객체 배열의 선언 및 활용 방법은 기본 타입 배열과 동일하다. 객체 배열이 생성될 때 배열의 각 원소 객체마다 기본 생성자가 실행되며, 배열이 소멸될 때 각 원소 객체마다 소멸자가 실행된다. 원소 객체는 인덱스가 높은 곳에서 낮은 순으로 소멸된다. 객체 배열은 다음과 같이 생성자를 이용하여 초기화할 수 있다. Circle circleArray[3] = { Circle(10), Circle(20), Circle() }; 동적 메모리 할당 및 ..
객체에 대한 이해 실세계는 객체들의 집합이며 객체들이 상호 통신하는 시스템이다. 캡슐화는 객체를 캡슐로 싸서 그 내부를 볼 수 없게 하고 외부의 접근으로부터 보호한다. C++ 객체는 멤버 변수와 멤버 함수로 구성되며, 멤버 변수는 객체의 상태(state)를, 멤버 함수는 객체의 행동(behavior)을 표현한다. C++ 클래스는 객체를 정의하는 틀 혹은 설계도로서 사용자는 클래스로 새로운 데이터 타입을 선언한다. C++ 객체는 실행 중에 생성되어 존재하므로 실체(instance)라고도 부른다. C++ 클래스 만들기 class 키워드를 이용하여 클래스를 선언한다. 클래스 선언 뒤에는 반드시 세미콜론(;)을 붙인다. 클래스는 선언부와 구현부로 나누어 작성하는 것이 원칙이다. 클래스 구현부는 클래스 선언부에 ..
C++ 프로그램의 기본 요소와 화면 출력 C++ 프로그램은 main() 함수에서 실행을 시작하여, int main()으로 표준화되어 있다. C++ 프로그램에서 main() 함수만 예외적으로 return 문을 생략할 수 있다. return 문이 생략되면 함수가 종료할 때 0을 리턴한다. C++ 프로그램에서 입출력을 하기 위해서는 #include 문이 반드시 필요하다. cout은 C++ 표준 출력 스트림 객체로서 C++ 프로그램과 스크린 장치를 연결한다. C++ 프로그램은 cout 객체와 연산자를 이용하여 쉽게 사용자로부터 키 입력을 받을 수 있다. Namespace와 std:: 여러 명이 나누어 작성한 코드나 오픈 소스 코드 사이에 클래스, 변수, 함수 등의 이름(identifier)이 충돌하는 오류를 해..
C++ 시작 컴퓨터와 프로그래밍 전문가들은 소프트웨어가 주목받는 세상이 왔고, 이 시대의 IT 세계를 지배할 것으로 예측한다. 소프트웨어는 컴퓨터의 중앙처리장치(CPU)가 이해할 수 있는 일련의 명령들과 데이터로 구성되며, CPU는 이 명령들을 실행함으로써 요구된 기능을 수행한다. 프로그래밍 언어는 0과 1의 이진수로 구성되는 기계어, 기계어의 각 명령어를 ADD, SUB, MOVE 등과 같은 상징적 니모닉 기호로 일대일 대응시킨 어셈블리어, 사람의 언어에 보다 가까운 C, C++, Java 등의 고급 언어로 진화하였다. 고급 언어는 컴파일러에 의해 기계어로 변환되고, 어셈블리어 프로그램은 어셈블러라는 시스템 프로그램에 의해 기계어로 변환된다. 대부분의 경우 컴파일러는 기계어로 변환할 때 어셈블러를 이용..