가상함수 클래스를 상속 받아서 쓸 때, 부모 클래스에 고치고 싶은 함수가 있을 때 부모 클래스를 고치지 않고 virtual funtion (가상함수)를 사용하여 자식 함수를 실행하도록 함 class A { public: virtual int aa(int i) { return(i * 2); } }; class B : public A { public: int aa(int i) { return(i * 3); } }; 가상함수는 부모 클래스 함수의 리턴값, 매개변수 개수, 형이 완전히 같아야 함 부모 클래스 함수 앞에 virtual을 쓰면 가상 함수가 됨 오버로딩 VS 오버라이딩 오버로딩 오버라이딩 구현 함수/연산자 중첩 가상함수 바인딩 정적 동적 구조 병렬 상속 작용시점 컴파일시 실행시 순수가상함수 #incl..
상속성 이미 존재하는 클래스의 기본적인 특성을 물려받는 것 원래 있던 프로그램에 새로운 특성을 추가하는 방식 프로그램 개발시간 단축, 프로그램 재사용, 경비 절감 등의 효과가 있음 사용법 class 자식클래스명 : 상속접근제어 부모클래스명 { }; * 상속접근제어→ public, protected, private 기본클래스/ 상속접근제어 private protected public private 상속X 상속X 상속X protected private protected protected public private protected public 1. public 상속접근제어 class Cat : public Animal class Animal { private: int a; protected: char b; ..
1. 연산자 오버로딩 연산자의 기능을 클래스에서 새롭게 정의하여 사용하는 것 숫자, 문자를 대상으로 하는 연산자를 재정의하여 편리한 프로그래밍 제공 일반적으로 문자나 좌표 등을 더할 수 없지만 다양한 덧셈에 사용할 수 있도록 연산자의 의미를 재정의하는 것 "I" + "Love you" / (1,2) + (3,4) 1) 단항 연산자 오버로딩 단항 연산자는 ++, --, (부호)가 있음 = 매개변수가 필요없음 리턴형 operator 연산자명( ); //후치는 int를 써서 구분함 #include using namespace std; class Point { private: int x, y; public: Point(int i, int j) { x = i; y = j; } Point operator ++() ..
객체 지향 언어의 특징 중 하나인 다형성을 구현하는 방법 컴파일러 중 실행 중 funtion overloading operator overloading virtual funtion 1. 함수 오버로딩 C에서 기능이 같은데도 자료형에 따라 다른 이름의 함수를 사용함 C++에서는 하나의 함수 이름을 중첩(오버로딩)해서 사용 가능 // 두 개의 정수형 매개변수를 받아들여 더하는 함수 int add_i(int i, int j) { return (i + j); } //두 개의 실수형 매개변수를 받아들여 더하는 함수 float add_f(float i, float j) { return (i + j); } //두 개의 double형 매개변수를 받아들여 더하는 함수 double ..
변수에 const를 사용하면 상수의 의미를 갖게 하여 변수값을 변경할 수 없게 함 const int x=1; int const y=2; const int z{3}; constexpr int a=4; 함수에서 const를 사용하면 함수, 매개변수, 리턴형이 읽기 전용임을 나타냄 void func(const int); → 매개변수가 const const double func(int) → 리턴값이 const (&를 리턴하는 경우) void func(void) const; → 함수가 const (멤버변수를 변경하지 않는 함수) const 멤버 특징 1) const형 멤버함수는 해당 멤버변수를 변경할 수 없음 2) const형 멤버함수는 const함수만 호출할 수 있음 3) 생성자와 소멸자에 사용 못 함 4) 멤..
▶ 생성자와 소멸자는 사용자가 정의하지 않아도 되는 멤버함수 시스템 내부에서 항상 객체의 생성, 소멸을 담당 사용자가 유용하게 사용하려 할 경우에만 가시화시켜 선언, 정의함 1. 생성자 일반 자료형의 경우 컴파일러가 처리해 주지만 사용자 정의형인 클래스의 객체를 초기화하는 함수가 생성자이다. 1) 변수 초기화 하는 방법 C++에서 초기화 클래스 멤버변수 초기화 int a=10; int a(10); int a{10}; 생성자( ) { age=1; } 생성자( ) : age(1){ } 생성자( ) : age{1}{ } 생성자 정의 X #include using std::cout; class Dog { private: int age = 1; //변수 초기화 public: int getAge() { return..
1. 정수 클래스와 객체 class Integer{ private: int A; public: int getA(); int setA(); }Val1; Integer Val2; 1) private, public: 속성 2) int A: 멤버변수 3) int getA(): 출력 멤버함수 4) int setA(): 입력 멤버함수 5) Val1: 객체 만드는 첫 번째 방법 6) Val2: 객채 만드는 두 번째 방법 2. 속성 (private, public) 1) private 데이터를 외부로부터 보호하기 위한 방법 = 외부 접근 불가 생략가능 해당 클래스의 멤버함수만 접근 가능 class Man { private: int age; public: int getAge(); }; Man Me; //Me.age(x) ..
(1) 객체 지향 프로그래밍 등장 배경 소프트웨어 규모의 대형화, 복잡화로 개발비용 증가 소프트웨어 가격폭 상승 프로그램 유지보수의 어려움과 개발 적체 현상 ※ 소프트웨어를 효율적으로 설계/구현하는 방법론 필요 -> Divide and Conquer (2) 해결책 : 객체 지향 프로그래밍 객체 지향: 문제의 모든 초점을 실세계에 존재하는 객체 중심으로 생각 object = data + code program = object1 + object2 object data (fields, attributes, properties) code (methods) (3) 구조적 프로그래밍 VS 객체 지향 프로그래밍 구조적 프로그래밍 객체 지향 프로그래밍 - 처리 동작에 중점을 두어 프로그램 작성 - 데이터와 처리 동작을..