추상 클래스는 순수 가상함수가 한개 이상 있는 클래스이다. 추상 클래스이기 때문에 앞서 설명한 것처럼 자기 자신의 객체를 생성할 수 없게 막아둔다. 파생 클래스 설계자에게 특정함수를 반드시 만들라고 지시하기 위해서 사용한다. java, C#의 인터페이스와 같은 역할이다. 이런 추상 클래스는 강한 결합을 약한 결합으로 바꾸는데 중요한 역할을 한다. class Camera { public: void Take() { std::cout
Override 예전 C++에서 상속받은 함수를 재정의 할때 만약 오타가 났다면 그냥 그대로 해당 클래스에 메서드가 생겨버리는 문제가 있었다. 이를 해결하기 위해서 override라는 키워드가 생겼다. #include class Base { public: virtual void foo() {} virtual void goo(int) {} }; class Derived : public Base { public: void foo()override {} void goo(int a)override {} void fooo() override {} // error void goo(double) override {} // error }; 다음과 같이 사용하면, 함수의 이름이 틀렸거나 인자의 자료형이 다르다면 오류가 ..
int main() { Dog d; Dog* p1 = &d; // ok int* p2 = &d; // error Animal* p3 = &d; // ok... 기반 클래스 포인터로 파생 클래스 객체를 가리킬수 있다. // upcasting. 객체지향의 중요한 특징 // 1. 기반 클래스 포인터로 파생 클래스 객체를 가리킬수 있다. // 2. 그런데, 기반 클래스 포인터로 기반 클래스 멤버만 접근 가능 p3->age = 10; p3->color = 10; // error. 컴파일 시간에는 무조건 p3를 Animal 이라고 생각하기 때문에 // 3. Dog 고유 멤버에 접근하려면 캐스팅 필요 static_cast(p3)->color = 10; } 위의 코드처럼 기반 클래스(Animal) 포인터(p3)로 파생..
생성자는 객체를 생성할 때, 어떤 정보를 가진 객체를 생성하게 하는지 정의 하는 것이다. class Base { public: Base() {} Base(int a) {} ~Base() {} } class Derived : public Base{ public: // Derived() {} // Derived() : Base() {} // Derived(int a) {} // Derivde(int a): Base() Derived() : Base(0) {} Derived(int a) : Base(a) {} ~Derived() {} } int main(){ Derived d(1); } 위 코드에서는 Derived 클래스가 Base라는 기반 클래스를 상속 받은 것을 볼 수 있다. 그리고 주석이 된 부분은 De..
파이썬을 사용하다보면 list.sort()와 sorted()를 볼 수 있다. 둘의 차이는 간단하다. list.sort()는 사본을 만들지 않고 리스트 내부를 변경한다. 반면 sorted(list)를 하게 되면 새로 사본을 만들어서 기존의 list 값의 변화를 주지 않는다. >>> arr = [2,4,5,1,12,3,13,7] >>> sorted(arr) [1, 2, 3, 4, 5, 7, 12, 13] >>> arr [2, 4, 5, 1, 12, 3, 13, 7] >>> arr.sort() >>> arr [1, 2, 3, 4, 5, 7, 12, 13] 위에서 보면 sorted(arr) 이후엔 arr값의 변화가 없지만, arr.sort() 이후엔 값이 변화한 것을 알 수 있다.(참고로, arr.sort()를..
특정 python 파일을 실행 시킬 때, 특정 변수의 값을 입력 받고 싶을 때 사용하는 방법이다. 입력함수 input()을 통해 받을 수 있고, 따로 config.py 파일을 만들어서 변수를 변경하는 방법도 있지만 파일을 실행 시킬 때 간단하게 입력 가능하기 때문에 많이 쓰이는 것 같다. 사용 방법 import argparse parser = argparse.ArgumentParser() # 처음으로 인스턴스를 생성 시켜줘야 한다. parser.add_argument('--model_dir', type=str, default='./model', help='Base directory for the model.', required=False) # add_argument()를 통해서 인자를 입력 받는다. ar..
- Total
- Today
- Yesterday
- apache
- Producer
- rhel
- centos
- Java
- Front
- NextJS
- React
- Container
- Firebase
- backend
- Linux
- OS
- KAFKA
- caching
- cs
- consumer
- JPA
- feign client
- apache kafka
- K8S
- API
- zookeeper
- Data Engineering
- spring
- broker
- 리액트
- spring boot
- 프론트엔드
- frontend
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |