IT

참조 C++에서 참조란 선언된 변수에 대한 별명, 지칭하는 새로운 이름으로 "& 기호"를 사용합니다. int a=1; int ref_a = a; // 참조 변수 ref_a를 선언하면, ref_a와 a는 동일한 변수가 됩니다. Rectangle b; Rectangle &ref_b = b; // 객체 변수에 대해서도 참조를 사용할수 있습니다. 참조 변수는 원본 변수와 동일한 공간을 사용하므로 아예 같다고 생각하시면 됩니다. 코드상 작동 구조가 포인터와 유사하기에 "->"같은 연산자를 사용하지 않도록 주의해야 합니다. 또한 원본 변수를 초기화하지 않으면 쓰레기값 때문에 참조를 생성할 수 없으며 (컴파일 오류 발생) 참조 배열은 만들 수 없습니다. 참조를 사용하는 이유는? 하나의 변수를 여러 개의 이름으로 사용..
함수의 인자 전달 방식 '값에 의한 호출(call by value) ' 과 ' 주소에 의한 호출(call by address) ' 으로 함수의 인자를 전달하는 방식이 있습니다. 간단히 이해하려면 값에 의한 호출은 "내가 가진 값을 함수에 전달하기만 하는 것"이고 주소에 의한 호출은 "내가 가진 값의 주소를 함수에 전달하여 변수 값을 바꾸고자 하는 것"이라고 생각하면 됩니다. 예시를 들어 설명하자면 아래코드의 swap 함수의 역할을 주의 깊게 봅시다. #include #include using namespace std; using namespace std; void swap(int a, int b){ void swap(int *a, int *b){ int temp; int temp; temp = a; te..
this 포인터 this는 객체 자신에 대한 포인터로서 클래스 내의 멤버 함수에서 사용합니다. 때문에 전역 변수도 지역 변수도 아니며, 객체를 생성하면 만들어진 객체마다 서로 다른 this 포인터가 만들어지고 객체에 대한 주소를 가리킵니다. 멤버가 아닌 함수는 객체에 속하지 않으므로 this 포인터와 같이 사용할 수 없습니다. 정적 멤버 함수에서도 쓸 수 없지만 이내용은 5장에서 다룹니다. this 포인터는 다음과 같이 선언할 수 있습니다. class Rectangle { int width; public: Rectangle() { this->width =1; } Rectangle(int width) { this->width = width; } void a(int width){ this->width = w..
객체 포인터 포인터란 주소값을 저장해 주소에 있는 값들을 호출하는 변수이고, 코드를 쉽게 이해하기 위해 앞으로 포인터는 "무언가를 가리키고 있는 변수 '→' "로 생각합시다. 다음은 객체 포인터를 이용한 코드입니다. Rectangle A; int a = A.getArea(); Rectangle *p; p = &A; a = p ->getArea(); Rectangle 타입의 객체에 대한 포인터 변수 p는 " Rectangle *p; " 로 선언합니다. 선언된 포인터는 주소를 지정하지 않은 한 아무 객체도 가리키지 않습니다. (객체 생성 시 자동으로 그 객체를 가리키지 않습니다.) ※ 따라서 초기화를 하지 않는다면 객체에 대한 멤버 함수 접근이 불가하기에 오류가 발생합니다. 객체 주소 지정은 "& 연산자"를..
접근 지정자 클래스 선언부를 보면 public: 를 적고 난 후 멤버 함수와 멤버 변수를 쓰는 것을 볼 수 있는데, 이는 외부와의 접근 가능한 범위를 지정해 줍니다. private : 클래스 내의 멤버 함수들에게만 접근 허용 기본 디폴드 값으로 아무 접근 지정을 하지 않은 경우 자동으로 설정됩니다. 객체가 클래스의 멤버함수에 접근할 수 없게 만듭니다. 따라서 오직 생성자를 통해서만 객체가 접근 가능합니다. 또한 외부에서 객체를 생성할 수 없게 할 때도 사용합니다. public : 클래스 내외 모든 함수 접근 허용 클래스 외부에 객체를 생성하기 위해서 선언해줘야 하는 접근 지정자입니다. 멤버 함수를 보호하지 못하지만, 외부에서 객체를 생성해야 할 경우 public으로 선언하지 않으면 컴파일 오류가 발생합니..
객체의 뜻과 클래스 만들기 객체란 "하나의 대상"이라고 생각합니다. 그 하나의 대상이 가지는 내부 구조는 외부로부터 보호받고, 다른 대상과 상호작용을 하지요. 이러한 객체만의 특징을 "캡슐화"라고도 합니다. C++ 객체는 자신의 상태(state)를 보여주는 멤버 변수와 행동(behavior)을 구현하는 코드인 멤버 함수로 구성하고, 이런 객체를 정의하는 틀을 "클래스"라고 합니다. 즉, 클래스의 역할은 멤버 변수 메모리와 멤버 함수 코드를 가진 객체를 만들어 객체가 역할을 수행하게끔 하는 것이고, 컴파일이 끝나면 사라집니다. 클래스와 객체는 비슷해 보이지만, 의미와 역할은 다르기에 구분해야 합니다. class pencilcase{ int pencil_1; int pencil_2; int eraser; p..
이번 장에서는 C++의 데이터를 입력받는 법을 설명합니다. C언어 해서는 scanf, gets, getc, getcher 등 사용하지만 앞으로는 다른 방식을 사용할 것입니다. " cin " 와 " >> 연산자 " 기본적인 입력은 " cin >> 입력변수 " 로 볼 수 있습니다. 뜻은 "콘솔(키보드)로부터 데이터를 입력받아 입력변수에 대입하라"이고 cout 과는 반대의 의미를 가집니다. cin은 C++ 표준 입력 스트림 객체 (standard input stream object)로 키보드로부터 입력된 값들은 모두 스트림 버퍼에 들어옵니다. ※ 지금은 스트림 버퍼를 단순하게 스트림 = 객체, 버퍼 = 임시 메모리 공간 (버퍼링의 버퍼)라고 생각합시다. >>연산자는 스트림 추출 연산자(stream extrat..
이번 장에는 C++ 코드의 기본 구조와 개념을 설명합니다. 다음은 " 프로그래밍 기초 "라는 문장을 화면에 보여주는 코드이며 기본 구조를 알아보겠습니다. ※ C언어의 기본 문법 (반복문,배열 등)을 안다는 전제로 진행합니다. /* 여러 줄의 주석문을 만들때 쓰는 기호 */ #include // 한 줄만 주석문으로 만들때 쓰는 기호 int main( ) { std::cout
w_w
'IT' 태그의 글 목록