Programming 6

오버라이딩을 통한 다형성의 실현(virtual 개념, 오버라이딩 개념)

안녕하세요~이번에는 오버라이딩을 공부했지만, 어떻게 쓰이는 지 이해가 잘 안되시는 분들을 위해 예제로 통해 쉽게 설명드리고 싶어 글을 쓰게 되었습니다. 오버라이딩을 했을 때와 안했을 때 예시를 통해 코드가 어떻게 다른지도 밑에 있으니 공부에 참고하시면 좋을 것 같습니다. 오버라이딩을 통해 다형성을 실현한 예시#include using namespace std;class Shape{public: Shape() {} ~Shape() {} virtual void Draw() = 0;private:};class Circle : public Shape{public: Circle(){} ~Circle() {} void Draw(){ cout > choice; switch (choice) { case 0: fQu..

Programming/C,C++ 2022.03.01

참조리턴

참조리턴참조리턴은 함수의 반환값을 반환할 때 참조를 사용해 리턴하는 것을 말합니다.함수에서 객체나 값을 반환할 때 복사되어져서 전달되게 되는 데 이런 불필요한 복사를 막을 수 있어 효율적인 프로그램을 만들 수 있는 방법입니다. 간단한 예시를 통해 참조리턴을 이해해보도록 하겠습니다. 1) 값 전달 방식(참조를 사용하지 않은 경우)참조를 사용하지 않은 경우 위와 같이 add함수안에서만 생명력을 가지는 변수 n이 생성됩니다. 그리고 반환을 할 때도 n의 값을 전달하는 방식입니다. 2) 참조를 통한 전달(매개변수에만 참조를 사용한 경우)참조로 매개변수를 받으면 a라는 변수의 별명이 n으로 추가되는 것입니다. 그래서 1번 방식에서의 불필요한 복사생성을 안해도 되는 장점이 있지만, 값 변경이 목적이 아니라 단순히 ..

Programming/C,C++ 2022.02.23

복사생성자

복사생성자복사생성자함수는 복사 생성 시에만 실행되는 특별한 생성자입니다.클래스에서 오직 1개만 존재할 수 있고, 매개변수도 오직 하나로 자기 클래스에 대한 참조입니다.선언형식은 다음과 같습니다.class ClassName { ClassName(const ClassName& c);}; const는 붙여도되고 안붙여도되지만 참조를 통한 전달의 유일한 단점이 원본이 바뀔 수 있다는 점임을 고려했을 때 const를 붙이게 되면 원본이 바뀌게 되는 상황을 방지할 수 있어 붙이는 것이 좋습니다. &를 붙여 참조를 통해 전달하는 이유는 값 전달 방식(call by value)로 매개변수를 전달함에따라 불필요한 복사생성이 생기기 때문에 효율성 증대를 위해 사용한 것입니다. 복사생성자가 필요한 이유#includeusi..

Programming/C,C++ 2022.02.23

연산자 중복

연산자 중복연산자 중복이란 이미 역할이 정해져 있는 연산자에 다른 의미를 부여하는 것을 말합니다. 예를 들어, '+' 연산자를 생각해보면 수학에서는 + 연산의 연산대상에 값이 오지만 실제 세계는 " 8분 음표 + 8분 음표 = 4분 음표"와 같이 다양한 것들이 오고 우리는 그것을 이상하게 여기지 않습니다. 이런 것을 반영하고 연산자의 쓰임을 늘리기 위해 연산자 중복이 존재합니다. 연산자 중복까지 공부하셨다면 string 클래스를 아실겁니다. string을 +연산자로 더하면 문장이 합쳐집니다. +연산자가 string 클래스가 연산대상으로 왔다는 것을 확인하고 적절한 연산을 해주는 것입니다. 연산자 중복 함수를 만드는 방법다음은 연산자 중복 함수선언 형식입니다.리턴타입 operator 연산자(매개변수리스트..

Programming/C,C++ 2022.02.22

static 멤버(정적멤버)

static 멤버변수, static 멤버함수static 멤버변수와 static 멤버함수는 같은 클래스의 객체들이 공유할 수 있는 변수와 함수입니다. static 멤버변수는 일반 변수처럼 객체마다 생성되는 것이 아닌 "공유변수"로써 클래스 당 1개만 있는 것입니다. 예를 들어, 사람들이 의견을 공유하는 게시판이 있다고 생각해봅시다. class Board 게시판에는 다양한 사람들이 글을 씁니다. 그리고 그 기록들이 차곡차곡 쌓이죠. 글 하나하나는 객체라고 볼 수 있고, 글이 쌓인 집합이 static변수로 볼 수 있습니다. 아래에서 관련예제를 보도록 하겠습니다. static 변수,함수 사용법static 멤버를 사용하기 위한 방법으로는 두 가지가 있습니다. 1. 객체의 멤버로 접근하는 방법2. 클래스명과 범위지..

Programming/C,C++ 2022.02.21

함수중복(fuction overloading)

함수중복이란?C언어에서는 없는 기능으로 C++에서만 지원하는 기능입니다. 말 그대로 함수의 이름을 중복시켜도 상관없다는 것인데요. 그렇게 할 수 있는 이유는 함수를 호출할 때 매개변수의 개수 그리고 종류로 함수의 종류를 구분할 수 있기 때문입니다. #includeusing namespace std;int add(int a, int b) { cout 위의 코드에서 함수 3개의 이름은 모두 같지만 매개변수, 매개변수의 타입을 통해 구분하여 접근할 수 있습니다.1번과 3번함수는 매개변수의 타입을 통해, 1번과 2번함수는 매개변수의 개수를 통해 구분되어집니다. 이를 통해 굳이 add1,add2,add3과 같이 여러 개의 덧셈함수를 만들 필요없이 하나의 이름으로 만들 수 있어 보기 좋은 코드를 만들 수 있습니다...

Programming/C,C++ 2022.02.19