[OOP, C++] Class 기초 - 선언, 초기화, 사용
·
OOP (Object Oriented Programming)
본격적인 객체 지향 프로그래밍의 시작이다. 클래스를 선언하고 초기화하고 사용하는 법까지 account라는 Class를 통해 알아보도록 하자. 헤더 파일 먼저 class를 선언하는 곳은 소스 파일이 아닌 헤더 파일이라는 사실이 중요하다. 그 이유는 클래스를 헤더 파일에 선언함으로써 코드의 재사용성, 가독성, 유지 보수성을 높일 수 있고, 컴파일 타임 최적화와 컴파일 시간 단축을 이룰 수 있기 때문이며, 객체 지향 프로그래밍의 핵심 중 하나이다. 우리가 만들 account라는 클래스는 다음과 같은 구조를 가진다. 1. 계좌의 잔액 2. 계좌의 잔액을 로그에 출력하는 메서드 3. 계좌의 잔액을 다른 계좌에 전달하는 메서드 // account.h class account { int balance; public:..
[Syntax, C++] Array에서의 Pointer
·
OOP (Object Oriented Programming)
Array와 Pointer의 관계 메모리 주소에 직접적으로 접근할 수 있다는 장점이 있는 Pointer라는 개념은 Array와 밀접한 관련이 있다. 왜냐하면 Array는 메모리에 연속적으로 값을 저장하고, Array를 초기화한 변수 자체는 Array의 첫 번째 요소의 주소를 담고 있기 때문이다. 다음 예시를 통해 Array와 Pointer의 밀접한 관계를 이해할 수 있겠다. #include using namespace std; int main() { int x[] = { 2, 3, 4, 5 }; cout
[Syntax, C++] 입력값과 선언한 자료형이 다를 때는 어떻게 처리해야 할까? (with simple I/O, ignore and clea
·
OOP (Object Oriented Programming)
simple I/0각 언어마다 입출력을 할 때 장단점이 있는 듯하다. C++에서는 먼저 받아올 변수의 자료형을 선언하고, 공백을 활용하여 해당 변수에 맞는 자료형으로 할당할 수 있다. 변수의 자료형을 미리 선언하는 것 빼고는 Python과 달라 보이지 않고 오히려 불편한데, 여러 자료형을 한 번에 받아올 수 있다는 점은 반대로 장점이 된다. 두 코드를 통해 차이를 이해해 보자. Python# 받아올 자료형이 같을 때: 공백을 기준으로 나눠서 할당 a, b = map(int, input().split()) # 받아올 자료형이 다를 때: list로 받아온 후 자료형 변경 # ex) input: '사과 3' arr = list(input().split()) b = int(arr[1])자료형이 같을 때에는 ma..
[Syntax, C] - 포인터(Pointer)란?
·
OOP (Object Oriented Programming)
오랜만에 C와 C++ 공부를 다시 시작하게 되면서 그동안 쓸 일이 없었던 Pointer의 개념을 다시 정리해보려 한다. 하나의 scope 안에서 변수의 값을 초기화하고 변경하는 경우에는 아무런 문제가 없겠지만, 함수를 사용하는 과정에서 영구적으로, 혹은 완벽하게 해당 변수의 값을 변경하려고 한다면 반드시 알아야 하는 개념이 바로 포인터다. 또 다른 고급 언어(Python, Java 등)에는 없는, 메모리에 직접 접근할 수 있다는 것도 포인터가 지닌 장점 중 하나이다. 포인터로 할 수 있는 것 포인터 변수에는 변수가 저장된 메모리의 특정 장소, 즉 메모리 주소값을 저장할 수 있다. 포인터 변수에 변수의 메모리 주소값을 저장하고, 포인터 변수를 통해 해당 변수를 참조해서 값을 바꿀 수 있다. 또 필요한 경우..
100두산
'c++' 태그의 글 목록