본문 바로가기

반응형

C++

(5)
가상 함수 가상함수의 경우 동적바인딩(바인딩 : 함수호출코드에서 어느위치에 함수를 실행하라는것, 일반함수의 경우 컴파일에서 결정해주는 정적바인딩을 사용하나 가상함수는 프로그램이 실행될때 객체를 결정하므로 런타임시 결정되는 동적바인딩, 동적바인딩은 시스템 자원의 소모가 있어 C++은 정적바인딩을 기본으로 사용한다) virtual void Sum() =0; 순수 가상 함수 : 필수로 자식클래스가 구현하는 것( 사용예로는 부모 인스턴스로 자식이 정의된 함수 접근 가능) * 순수가상함수가 포함된 클래스를 추상클래스라고 한다 virtual void Sum() 가상 함수 : 자식이 정의할 것을 기대하는 함수 자식에서 구현안해도 상관은 없다 (사용예로는 오버라이딩: 동일하게 구현하여 정의만 바뀔때) 가상함수 테이블 가상함수 클..
C++ 언어의 특징 1. 소멸자 : 소멸자의 경우 객체의 수명이 끝났을 때 자동으로 컴파일러가 소멸자 함수를 호출 delete -> ~소멸함수() 실행 2. 상속 #include #include using namespace std; class Person { private: string name; public: Person(string name): name(name) { } string getName() { return name; } void showName() { cout
인터페이스 vs 추상화 인터페이스와 추상화는 공통적인 부분이 많고 차이점도 많다. 허나 문법적으로 비슷해서 헷갈릴 수 있다 공통적인 요소는 - 자신의 클래스에서 구현하지 않고 다른 클래스를 통해 구현하는 공통점이 있다 차이점은 문법적으로는 추상화 클래스는 일반 변수, 일반 함수들이 사용가능하고 일부만 추상 함수 사용할 수 있다 인터페이스는 오로지 선언만 가능하다 개념적인 차이로는 인터페이스는 다양성에 초점을 맞춘것이다. 예를 들어 설명하면 고양이, 개, 말, 닭 등은 먹다,씻다,잠자다 등 특성을 가지고 있으며 각자 어떻게 먹는지, 씻는지, 잠자는지 다 다르다. 고로 각자의 상황에 맞게끔 구현하면 된다. 허나, 추상화는 상속에 초점을 맞춘것이다. 부모가 자식에게 해당 내용을 구현하도록 넘겨주면서 보강을 해주는 개념이다.
탬플릿 템플릿을 쓰는 이유 ? - 타입마다 일일히 정의해주기에는 효율이나 귀찮은 작업이 많다, 템플릿을 사용하면 사용자가 타입을 정의하여 사용하므로 타입에 구애받지 않고 필요한 함수를 사용할 수 있다 템플릿이란 ? 사용자에게 입력받을 타입을 typename 을 선언하여 구현해두어 해당 타입으로 사용하는 방식 #pragma once // Array.h #ifndef _ARRAY_H #define _ARRAY_H typedef signed long int Long; template class Array { public: Array(Long capacity = 100); // 디폴트 연산자이면서 인자값을 갖는 생성자 Array(const Array& source); ~Array(); Long Store(Long in..
참조형 변수 1. 별명 같은거라고 생각하면 됨 int a=3; int&b =a; b=4; // a=4 과 같음 고로 참조형은 생성 시 초기화가 필요함, 클래스 매개변수는 예외(생성자에서 초기화 해주도록 하기위함) 2. 포인터와 차별점 2.1 포인터는 주소, 참조형은 값 : 포인터는 4byte로 주소를 담을 수 있는 공간을 생성하여, 해당 변수의 주소 값을 받아오는 간접형식이라면, 참조형은 해당 변수의 값을 받아오며 참조형의 주소를 구하였을 때, 참조된 변수의 주소를 반환하며 참조된 변수와 동일하다고 생각하면 됨. 고로, 매개변수를 사용할 시 주로 사용 됨 3. 매개변수로 사용 시 이점 3.1 call by reference 매개변수로 사용 시 call by value 가 아닌 call by reference로 함수 ..

반응형