목록언어 (28)
개발하는 리프터 꽃게맨입니다.

개요 객체 지향 프로그래밍의 핵심 개념은 은닉성, 상속, 다형성입니다. 이번 포스팅에서 설명할 것은 '상속'인데, 상속은 객체들을 관리하고 설계하기에 매우 훌륭한 도구입니다. '상속'은 '파생 클래스'가 '기초 클래스'의 기능을 계승하는 것이라고 설명할 수 있습니다. 일반적으로 상속의 뿌리에는 '베이스 클래스'라는 것이 있고, 베이스 클래스를 상속받는 '파생 클래스'가 존재합니다. 흔히 이것을 '부모'와 '자식'의 관계에 있다고 말하는데요. 부모는 자식에게 상속하고 싶은 함수와 변수를 설정하고, 자식은 부모로부터 상속받은 함수와 변수를 사용할 수 있습니다. 다음 코드로 예시를 보겠습니다. class Player { public: Player(int x, int y, int id) : _x(x), _y(y..
클래스를 기본적으로 정의하면 암시적으로 생성되는 함수들이 있습니다. 1) 기본 생성자 2) 기본 소멸자 3) 기본 복사 생성자 4) 기본 대입 연산자 class Object { //이 아래 코드는 굳이 명시하지 않아도 //기본적으로 컴파일러가 만들어준다. public: //기본 생성자 Object() {} //기본 소멸자 ~Object() {} //기본 복사 생성자 Object(const Object& other) : a(other.a) , b(other.b) {} //기본 대입 연산자 Object& operator=(const Object& other) { if(this != &other) { Object newObject; newObject.a = other.a; newObject.b = other...

오버로딩 이름은 같지만 매개변수가 다르며 같은 유효 범위 내에 있는 함수를 '오버로딩'한다고 합니다. 다음 코드를 볼까요? void SayHello(int num) { cout
기본 접근권한을 제외하고는 전혀 차이가 없습니다. 접근권한을 명시하지 않을 경우 구조체는 public 클래스는 private라는 차이점만 존재하고 클래스에서 할 수 있는 모든 기능은 구조체 또한 할 수 있습니다. 컴퓨터 또한 이 둘을 구분하지 못하죠. 구조체도 class처럼 멤버 함수, 멤버 변수, 생성자, 소멸자, operater 오버로딩, 가상 함수, 상속 등.. 모든 걸 다 할 수 있습니다. 근데, 보통은 가능하다해도 구조체를 class 처럼 쓰는 사람은 별로 없습니다. 대부분의 코딩 규약에서는 둘을 엄밀하게 구분하죠, 헷갈리니까요. 개발자들은 구조체는 전통적인 C 스타일로 쓰는 것을 선호합니다. 다른 데이터 형식을 묶어서 관리하는 용도로만 쓰이죠. 멤버 함수, 가상함수, 상속 등 OOP 개념은 완..

1. 생성자란? 생성자(constructor)란 클래스에서 해당 타입의 객체를 초기화하는 방법을 정의하는 특별한 멤버 함수를 의미합니다. 생성자에서는 객체가 선언되었을 때 멤버 변수를 초기화하거나, 동적 할당을 하는 등 초기에 해줘야 할 행동들을 명시합니다. 기본적인 형태는 다음과 같습니다. /* 학생의 이름, 나이, 키를 저장하는 클래스 */ class Student { //참고: class의 기본적인 접근 제어자는 'private' 입니다. //생성자는 무조건적으로 public으로 지정한 뒤 정의하도록 합니다. public: Student() {} private: string_name; int_age; float_height; }; 위 형태처럼 인자를 아무것도 넣지 않은 상태의 생성자를 '기본 생성자..