일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LOB
- JUCE라이브러리
- gui
- vim-go
- Nebula
- 연결리스트
- a tour of go
- 알고리즘
- BOJ
- OS
- 공룡책
- C++ gui
- go
- 자료구조
- go channel
- C++ library
- 프로그래밍
- 코딩
- C++
- C++ gui 라이브러리
- C언어
- tour of go
- JUCE
- JUCE library
- 백준
- JUCE 튜토리얼
- Docker
- c++ heap
- 운영체제
- 리듬게임
- Today
- Total
목록Programming/C++ (36)
CafeM0ca
C++에는 우측값이라는 개념이 존재한다. 우측값? 좌측값? int main() { int a = 1; // a는 좌측값 1은 우측값 int& ref = a; // ref는 좌측값 a도 우측값이면서 좌측값 return 0;} 위 코드에서 a는 왼쪽에 있어서 좌측값이다. 1은 오른쪽에 있어서 우측값이다.다음줄에 ref는 왼쪽에 있어서 좌측값이다. a는 오른쪽에서 있어서 우측값이지만 a = 1을 통해 동시에 좌측값이다.따라서 a는 우측값이면서 좌측값이다.그럼 1 = a;를 생각해보자. 컴파일에러가 뜬다.1은 우측값이며 좌측값이 아니다. 위 내용을 토대로 다음과 같은 명제가 성립한다.모든 좌측값은 동시에 우측값이지만 모든 우측값은 좌측값이 아니다. 그럼 '무엇이 우측값인가?'에 대한 질문에 대한 답변은 '임시 ..
virtual 키워드는 클래스간 상속에서 자식 클래스가 부모 클래스의 함수를 오버라이딩 특성을 제어하고자 할 때 사용한다. 묻따말 코드부터 보자 출력결과부모 클래스로 Super가 있고 자식 클래스로 Sub은 public으로 Super를 상속하는데잠시 삼천포로 빠져 접근지시자에 대한 설명을 하자면public으로 상속받으면 Super에 public멤버에 접근 가능하다. 나머지는 다 privateprivate 부모 클래스의 public,protected,private가 private로 바뀜 protected 부모 클래스의 private,protected가 private로 바뀜 public 부모클래스의 private가 private로 바뀜 즉 public으로 상속받으면 protected까지 접근 가능하다는 이야..
pimpl은 매번 인터페이스와 구현 클래스를 만든다.구현 클래스는 원래 만들던 방식의 클래스랑 같다.인터페이스 클래스는 구현 클래스의 public 메서드만 담는다.인터페이스 클래스의 메서드들은 단순히 구현 클래스의 메서드 호출을 중계하는 역할을 한다.인터페이스 클래스는 단 하나의 데이터 멤버로 구현 클래스의 포인터를 가진다. 이렇게 클래스를 분리하면 구현 클래스가 어떻게 바뀌든 public 인터페이스 클래스에는 변화가 없으므로 컴파일을 다시 해야 할 필요를 줄일 수 있다.즉, 구현 부분이 어떻게 바뀌든 인터페이스만 그대로라면 사용자로서는 컴파일을 다시 할 필요가 없다.컴파일 종속성의 배제는 구현 클래스의 객체를 인터페이스 클래스가 포인터로 가질 때만 유효하다. 이러한 테크닉은 인터페이스와 구현을 완전히 ..
이름부터 귀여운 댕글링 포인터(dangling pointer)는 내면을 파해쳐보면 전혀 귀엽지 않다. 다음과 같은 코드가 있다고 가정하자. n을 동적할당해서 1을 가리키게한다.p는 n이 동적할당한 값 1을 가리키게한다. n은 역할을 다 하고 동적할당을 해제하고 안전하게 nullptr로 만들어 주었다.ㄴ그러나 ptr은 여전히 n이 '가르켰던' 값을 가리키고 있다. 해제된 메모리를 가리키고 있는셈. 출력결과 Use After Free(UAF) 취약점이 발생한다.
처default와 delete는 각각 switch case구문과 new의 짝궁으로 사용되었다. C++은 오버로딩 기능이 있다보니 생성자를 여러개 만들 수 있다.그 중에서도 default 생성자가 있는데 흔히 클래스이름() { } 처럼 생겼다. 디폴트 생성자임을 명시해주기 위해서 다음과 같이도 사용한다. 그리고 디폴트 생성자에 delete 키워드를 사용하면 클래스이름 변수이름; 처럼 사용이 불가능해진다.(디폴트 생성자가 호출되지 않기 때문) \main 함수의 a가 컴파일 에러를 보여주고 있다. default와 delete는 디폴트 복사 생성자와 디폴트 대입 연산자에서도 사용 가능하다.다음과 같은 코드가 있을 때, 실행결과각각의 클래스 변수들의 주소는 제각각이지만 값들은 똑같다.a1은 디폴트 대입 연산자로 ..
this 포인터는 C++에서 클래스 내부에서 사용하는 포인터다. ‘this’ pointer is a constant pointer that holds the memory address of the current object. - this 포인터는 현재 객체의 메모리 주소를 갖고 있는 const 포인터다.‘this’ pointer is not available in static member functions as static member functions can be called without any object (with class name). - this 포인터는 static 멤버함수에서 사용할 수 없는데 static 멤버 함수는 어느 객체에서나 호출 될 수 있기 때문이다.+ static 멤버함수는 클..
smart pointer automatically managing memory a pointer . if out of scope range, It deleted. There are three types pointer in std namespace. - unique_ptr- shared_ptr- weak_ptr First unique_ptr code. 12345678910111213#include #include int main(){ // unique ptr std::unique_ptr ch = std::make_unique('c'); auto a = std::make_unique(1); std::cout
12345678910111213141516171819202122232425262728293031323334353637#include #include #include class EvenSequence{ public: EvenSequence(std::initializer_list args) { if(args.size() % 2 != 0){ throw std::invalid_argument("initializer_list should " "contain even number of elements"); } mSequence.reserve(args.size()); for(auto value : args) { mSequence.push_back(value); } } void dump() const { for(aut..
chain rule: y/w = f/s * s/w 에서 w값이 증가하면 y값도 증가하는 관계와 같은것.Back_propagation(역전파): 어떤 오류는 반대방향으로 접근하는것. 오류 E = 1/2 * (나오면하는 y값 - y)^2 뉴런이 하나일때랑 여러개일때랑 사용하는 역전파 알고리즘은 거의 동일함 The Gradient Descendent Method: w(가중치)와 e(에러)에서 w를 증가시켰을때 e값이 감소하는 값을 찾는것.
딥러닝 자료는 외국에 더 많다보니 영어 키워드같은거 외워두는게 도움됌 홍정모 교수님의 띵강의 영상 요약한 내용. Artificial Neural Network(인공신경망) : 많은 뉴런들이 이어져서 작동 -> 하나의 뉴런만 이해하면 나머지는 쉽다. 뉴런들은 input이 여러개일 수도 있고 bias(바이어스)의 값도 더해짐. 뉴런에서 input x로 들어온 값은 가중치 w랑 곱해지고 바이어스 b랑 더해지면 값이 된다.입력이 여러개면 각각의 x에대한 w를 곱하고 바이어스를 더하면 된다.( s = x1*w1 + x2*w2 + x3*w3 + b) 이렇게 합을 구하는 것을 Affine Sum이라고 한다. Activation Functions(활성화 함수)에는 3가지 종류가 주로 쓰인다- identity- ReLU..