본문 바로가기

언어77

[Python 기본 공부정리] 8-4. 클래스 - 객체 변수(object variable), 클래스 변수(class variable) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 파이썬 클래스를 공부하며 많이 헷갈렸던 객체 변수(object variable)와 클래스 변수(class variable)에 대해 정리하자. 이제 클래스에 소속된 변수들을 멤버 변수 또는 필드(field)라고 부르는데 필드는 일반적인 변수와 똑같다. 한 가지 차이점이 있다면 네임스페이스(namespace)에 속해있기 때문에 필드는 해당 클래스 또는 객체 내부에서 의미가 있다. (해당 클래스 내부와 객체 내부를 네임스페이스라고 한다.) 다시 얘기해서 필드가 통용되는 공간을 의미한다. 필드에는 객체 변수와 클래스 변수가 존재한다. 필드를 소유하고 있는 대상이 클래스냐 객체냐에 따라 객체 변수인지 클래스.. 2020. 1. 2.
[C++ 기본 공부정리] 14-6. OOP - 연산자 오버로딩(operator overloading) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 연산자 오버로딩(operator overloading)이란? C++에서 함수의 오버로딩에 대해 정리했었다. 동일한 이름의 함수에 매개변수의 개수, 타입 등을 다르게 하여 여러 개를 정의할 수 있도록 해주는 것이었다. 이 오버 로딩이 연산자에도 적용되어 하나의 연산자를 다른 기능도 사용할 수 있도록 연산자를 사용자 정의 클래스로 사용한다. 다음과 같은 연산자 이외의 모든 연산자는 전역 함수 또는 클래스로 재정의 가능하다. ① :: 범위 지정 연산자 ② . 멤버 참조 연산자 ③ .* 멤버 포인터 연산자 ④ ? 삼항 연산자 ⑤ # 전처리기 변환 ⑥ ## 전처리기 연결 멤버 함수로만 오버로딩 가능한 .. 2020. 1. 2.
[Python 기본 공부정리] 8-3. 클래스 - 상속(inheritance) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 일상적으로 쓰이는 상속이란 뜻은 재산, 지위 등을 물려받는 것을 뜻한다. 클래스에서의 상속도 이와 비슷한 의미로 쓰인다. 만약 클래스B를 만드는대 클래스A와 기본적인 부분은 유사하나 다른 기능 몇 개가 추가되고 기존 기능보다 좀 더 확장된 기능을 가진 클래스라면 A에서 기능을 물려받아 사용할 수 있게 하는 것이다. 간단히 예를 들어 사람이라는 클래스를 만들고 추가로 운동선수라는 클래스를 만들면 사람이 가진 팔, 다리, 걷기, 숨쉬기 등의 공통적인 특징을 물려받아 그대로 사용하고 운동능력이라는 특징을 좀 더 확장시켜 제작하면 운동선수라는 클래스를 쉽게 생성할 수 있다. 1. 상속(inheritance.. 2020. 1. 1.
[C++ 기본 공부정리] 14-5. OOP - 소멸자(destructor) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 객체가 생성될 때 객체의 초기화를 위해 생성자를 사용하였다. 그렇다면 객체의 사용이 끝나서 객체가 소멸될 때 반대의 역할을 수행할 멤버 함수가 필요하다. 이 역할을 수행하는 것이 소멸자(destructor)이다. 1. 소멸자(destructor) 생성자가 객체가 생성될때 컴파일러가 자동으로 호출하는 함수라면 소멸자는 객체가 소멸될 때 객체를 정리하기 위해 자동으로 호출되는 함수이다. 주로 동적할당을 통해 할당받은 메모리를 반환하거나 열어 놓은 파일을 닫는 등 마무리 작업이 필요한 경우 소멸자를 생성한다. 문법) class 클래스명{ ~클래스명() }; 생성자 처럼 클래스명과 같은 이름을 가지며 이름.. 2020. 1. 1.
[Python 기본 공부정리] 8-2. 클래스 - 생성자(constructor) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 생성자(constructor) 란? 생성자는 객체가 생성될때 해당 객체의 멤버 변수등 초기화가 필요한 데이터를 객체가 생성될때 초기화 해주는 역할을 수행한다. 예를 들어 위와 같은 클래스가 존재한다고 하자. 클래스 멤버 변수 num에 대한 값이 설정되어 있지 않기 때문에 print_num함수를 객체 생성후 바로 호출한다면 아무런 값도 들어있지 않은 멤버 변수를 호출하므로 에러를 발생시킨다. 따라서 해당 객체를 생성후 매번 set_num 이라는 함수를 통해 멤버 변수 num을 초기화 해줘야 한다. 이처럼 일일이 멤버 변수를 설정하는 함수를 호출하는것은 에러를 발생시킬 가능성이 있으므로 생성자를 .. 2019. 12. 30.
[C++ 기본 공부정리] 14-4. OOP - 생성자(constructor) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 생성자(constructor) 클래스를 정의한 후 클래스 객체를 생성하게 되면 메모리에 할당된다. 이때 클래스의 멤버 변수는 초기화되지 않은 상태이므로 사용할 수 없다. 일일이 멤버 변수에 접근하여 초기화 후 사용해도 되지만 만약 private처럼 외부 접근이 불가능한 상태라면 불가능하고 public설정이 된 멤버 함수를 이용하여 초기화해야 할 것이다. 이럴 경우에는 객체를 사용하기 전에 무조건 해당 함수를 실행하고 객체를 사용해야 한다. 따라서 C++에서는 객체의 생성과 동시에 멤버 변수를 초기화해주는 멤버 함수인 생성자(constructor)를 제공한다. 생성자는 C++에서 제공하는 멤버 .. 2019. 12. 30.