Programming86 재정의 함수들은 override로 파생 클래스의 가상함수 구현이 부모 클래스의 해당 가상 함수를 재정의 한다. 가상 함수 재정의(overriding)은 파생 클래스 함수를 부모 클래스의 인터페이스를 통해 호출할 수 있게 만드는 메커니즘이다. 재정의를 하기 위해서 필요한 조건들이 있는데, 1. 부모 클래스 함수가 반드시 가상함수여야 하고, 2. base 함수와 derived 함수의 이름이 동일해야 하며, 3. 매개변수 형식들이 동일해야 한다. 또한 4. const성이 동일해야 하며, 5. 반환 형식과 예외 명세가 호환되어야 한다. 그리고 6. 참조 한정사들이 반드시 동일해야 한다. C++11은 파생 클래스 함수가 부모 클래스 버전을 재정의 한다는 의도를 override를 사용해 명시적으로 표현한다. class Base { public: v.. 2020. 7. 5. 신경망1 신경망은 입력층, 출력층, 은닉층으로 이루어져 있다. 은닉 층의 뉴런은 입력층, 출력층과 달리 보이지 않는다. 기존 퍼셉트론에서 b는 편향을 나타내는 매개변수로 뉴런이 얼마나 쉽게 활성화되느냐를 제어한다. 이를 기존 네트워크에 추가하면 아래와 같은 그림이 된다. 또한, 조건 분기의 동작들을 함수로 표현해서 간략화 하면 아래와 같은 수식으로 표현할 수 있다. 활성화 함수 가중치를 조합한 결과는 a라는 노드가 되고, 활성화 함수 h()를 통해 y라는 노드로 변환되는 과정을 명시적으로 표현했다. 여기서 h()는 입력 신호의 총합을 출력 신호로 변환해주는 함수로 이를 활성화 함수라고 하며 입력신호의 총합이 활성화를 일으키는지 정하는 역할을 한다. 위의 활성화 함수는 임계값을 경계로 출력이 바뀌는데 이를 계단 함.. 2020. 7. 3. 정의되지 않은 비공개 함수보다는 삭제된 함수를 C++98에서는 특정 함수(주로 복사 생성자 / 복사 배정 연산자)를 호출하지 못하게 하기 위해 private으로 선언하고 정의는 하지 않았다. 그렇기 때문에 클라이언트는 호출 할 수 없고, 의도적으로 정의하지 않았기 때문에 호출에 실패한다. C++11에서는 복사 생성자와 복사 배정 연산자 선언 끝에 "= delete"를 붙여 삭제된 함수를 만드는 것으로 같은 목적을 달성 할 수 있다. 삭제된 함수는 어떤 방법으로도 사용할 수 없으며, 멤버 함수나 friend 함수에서 복사하려하면 컴파일이 실패한다. 삭제된 함수는 주로 public으로 선언하는 것이 관례이며, 그 어떤 함수도 삭제 할 수 있다. bool test(int num); if (test('a')) ... if (test(true)) ... if.. 2020. 7. 3. 알고리즘 스터디 11 https://programmers.co.kr/learn/courses/30/lessons/12926 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 programmers.co.kr 문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 조건 .. 2020. 7. 3. 퍼셉트론 ※공부하면서 적어보는 글이라 틀린 부분이 있을 수 있습니다.. 혹시 잘못된 부분 있으면 지적 감사합니다 퍼셉트론 다수의 신호를 입력 받아 하나의 신호(0 혹은 1)를 출력하는 것. 각각 x1, x2는 입력 신호, y는 출력 신호, w1, w2는 가중치이고 원을 뉴런 혹은 노드라 부른다. 동작 원리 입력 신호가 뉴런에 보내질 때 각각 고유한 가중치가 곱해진다. 그 신호의 총합이 정해진 한계값을 넘으면 1을 출력하고 아니면 0을 출력한다. 이를 수식으로 표현하면 이 구조로 각각 가중치와 편향 값 설정을 통해 AND, NAND, OR게이트를 만들 수 있지만 배타적 논리합인 XOR을 만들 수는 없다. 다층 퍼셉트론(multi-layer perceptron) 각각 AND, NAND, OR 게이트를 NAND(x1,.. 2020. 7. 2. 범위 없는 enum 보다 범위 있는 enum으로 범위 없는 enum(unscoped enum) C++98에서 enum으로 선언된 열거자들은 enum을 포함하는 범위에 속하며, 그 범위에 같은 이름이 있으면 안된다. (열거자들이 enum의 범위 밖으로 새어나간다) enum Color { black, white, red }; auto white = false;// white가 Color의 범위에 속해 있기 때문에 오류 또한 암묵적으로 정수 형식으로 변환된다. enum Color { black, white, red }; std::vector primeFactors(std::size_t x); Color c = red; ... if (c < 14.5) { auto factors = primeFactors(c);// 컴파일 된다 ... } 범위 있는 enum(.. 2020. 7. 2. 이전 1 ··· 8 9 10 11 12 13 14 15 다음