반응형

전체 글 209

[코드 중심 C++] - Polymorphism(다형성), 추상 클래스(Abstract Class), virtual, 순수 가상 함수(Pure Virtual Function)

1 여러 개의 서로 다른 객체가 동일한 기능을 서로 다른 방법으로 처리할 수 있는 기능을 다형성이라고한다. 예를 들면 필기구 역할을 하는 다양한 도구들 - 볼펜, 만년필, 연필- 은 서로다른 객체지만, 문서 작성이라는 동일한 기능을 수행한다. 간단히 말하면, 같은 클래스에서 나온 서로다른 객체가, 같은 메소드 호출에 대해서 서로 다른 출력을 내놓는다는 얘기다. 그런데 메소드는 기본적으로 단 하나의 메모리에서 모든 객체가 공유하게되는데, 이게 어떻게 가능한가? 그래서 우린 추상 클래스와 가상함수의 개념을 사용한다. 객체 포인터 자료형의 변수로 포인터에 접근할 때에는 아래와같은 문제가 발생할 가능성이 높다. (& 자료형으로 정의해도 마찬가지다.) 아래의 예시의 경우, C++ 컴파일러는 가리키고 있는 변수의 ..

[Deep Learning : 딥러닝] 다중 선형 회귀(Multiple linear regression)

다중 선형 회귀 입력값이 많다면 그에 맞게 경사하강법을 사용해야한다. $y = a_1x_1 + a_2x_2 + b$에 대한 평균 제곱 오차를 $a_1, a_2, b$에 대해서 편미분해야한다. ${1 \over n}\sum(y_i-(a_1x_1 + a_2x_2 + b))^2$을 $a_1, a_2, b$로 편미분하면 ${2 \over n}\sum(y_i-(a_1x_1 + a_2x_2 + b))(-x_1) = -{1 \over n}\sum((error)_(x_1))$ ${2 \over n}\sum(y_i-(a_1x_1 + a_2x_2 + b))(-x_2) = -{1 \over n}\sum((error)*(x_2))$ ${2 \over n}\sum(y_i-(a_1x_1 + a_2x_2 + b))(-1) = -{..

Markdown 사용법 정리

1. Heading '#' 기호를 이용해서 제목을 작성한다. 총 여섯개의 #을 허용한다. # Heading ## Heading ### Heading #### Heading ##### Heading ###### HeadingHeading Heading Heading Heading Heading Heading 2. Line '-'을 다섯번 치면 구분선이 생긴다. ----- 3. text 효과 **word**word *word*word ~~word~~word >word word * apple * pear - apple - pear 1. apple 1-1. applemango 2. pear apple pear apple pear apple 1-1. applemango pear 4. ..

[Deep Learning : 딥러닝] 경사하강법, 선형 회귀(Gradient descent, Linear Regression)

경사하강법 경사하강법 : 미분을 통한 기울기를 이용해서 오차가 작아지는 방향으로 가중치를 이동시키는 방법이다. 오차와 우리가 구하는 가중치값(a,b)을 이차함수로 표현한다고 하면 여기서 최소값이 구해지는 기울기가 0인 지점을 찾는 것이 목적이된다. 물론 모든 오차가 이렇게 이차함수 형태로 표현되지 않을테고, 따라서 우리가 보통 경사하강법으로 구하게 되는 극소점은 국소적 극소점이 된다. 뭘까 이 라임은 Learning Rate : 학습률. 변하는 가중치값이 어느정도 속도로 변할지 조정하는 수치이다. 이 값을 적절히 바꾸면서 최적의 학습률을 찾는 것은 중요하다. $${1 \over n}\sum(y_i-y_{iavg})^2 = {1 \over n}\sum(y_i-(ax_i+b))^2$$ 여기서 a와 b로 편미..

[코드 중심 C++] - 접근제한자 private, protected, public, Friend 키워드, Static 키워드

1 클래스와 구조체의 근본적인 차이가 무엇일까. 은닉 기능의 차이다. C++의 접근제한자 3가지 private, protected, public이 있다. private로 선언하면 클래스 내부의 멤버 함수 또는 friend 함수만 클래스의 private 멤버에 접근할 수 있다. protected로 선언하면 클래스 외부에서는 protected 멤버에 접근할 수 없다. 해당 클래스의 하위 클래스(상속)에서는 접근할 수 있다. public으로 선언된 데이터 멤버와 메서드는 다른 클래스에서도 접근이 가능하다. public 멤버는 . 연산자를 사용하여 접근한다. 2 friend 키워드를 통해 특정한 객체의 모든 멤버에 접근할 수 있다. friend를 통해서 함수를 작성하면 그 함수는 클래스의 메서드로 인식되지 않는..

행렬 계산기 5일차

해결해야할 것 컴파일 에러 WIN32 구현 추가로 해결할 것 소수점 처리하기 : .감지시 .이후의 숫자 세는 counter를 사용. 문자 입력 모듈을 따로 함수로 빼내기. 코드가 너무 더러움. #include #define TEXT_LENGTH 512 //matData은 행렬의 주소, *matData은 행렬의 하나의 행을 지정, **matData은 행렬의 하나의 원소(열)를 지정한다. typedef struct Matrix{ int n, m = 0;//행렬의 행과 열의 크기 char ** matData;//행렬의 data char * textMat; } Matrix; void initializeMatrix(Matrix matStruct); void getMatrix(Matrix matStruct); vo..

[코드 중심 C++] - 멤버 이니셜라이저 컴파일 에러 문제 (Member Initializer)

knowledgeforengineers.tistory.com/75 [코드 중심 C++] - 상속, 멤버 이니셜라이저(Inheretence, Member Initializer) 1 클래스를 상속시키려면 상속받을 클래스의 이름 옆에 :와 접근 제한자, 클래스의 이름을 붙여주면 된다. 2 생성자 : 부모 먼저 자식 나중 소멸자 : 자식 먼저 부모 나중 3 멤버 이니셜라이저( knowledgeforengineers.tistory.com 전에 올린 포스팅에 추가 설명을 하고자 한다. Student 생성자를 아래와 같이 적었을 때 왜 컴파일 에러가 발생할까? // Case1 Student(int studentID, string name){ this->name = name; this->studentID = stude..

[코드 중심 C++] - 상속, 멤버 이니셜라이저(Inheretence, Member Initializer)

1 클래스를 상속시키려면 상속받을 클래스의 이름 옆에 :와 접근 제한자, 클래스의 이름을 붙여주면 된다. 2 생성자 : 부모 먼저 자식 나중 소멸자 : 자식 먼저 부모 나중 3 멤버 이니셜라이저(Member Initializer)는, 부모 클래스의 멤버 변수를 초기화, 클래스 내의 변수를 초기화, const 변수를 초기화 등의 상황에서 사용한다. 멤버 이니셜라이저는 생성자의 몸체 부분보다 먼저 실행된다. 4 private는 외부에서 접근이 불가능 protected는 외부에서 접근이 불가능하나 파생 클래스에서는 접근이 가능 public는 어디서나 접근이 가능하다. 상속을 private하게 하면, 부모 클래스의 멤버 중 private 제한자보다 접근 범위가 넓은 멤버는 모두 private으로 접근 범위가 바..

[코드 중심 C++] 생성자, 참조변수형, 소멸자 (Constructor, Reference Variable, Destructor)

1 생성자는 객체 생성과 동시에 attribute를 초기화할 수 있게 하는 기능이다. 클래스의 이름과 동일한 이름의 method로 존재한다. 생성자는 반환값이 없다. 생성자는 여러번 정의 가능하여, 다양한 방법으로 객체 초기화를 시도할 수 있다. #include #include using namespace std; class Character { private: string name; int ragePoint; int hp; int damage; public: Character(string name, int hp, int damage) {//initialization. 생성자는 자료형이 없다. this->name = name; this->ragePoint = 0; this->hp = hp; this->d..

반응형