일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- operator overloading
- virtual function
- dynamic_cast
- c++ basic practice
- virtual function table
- 더 지니어스 양면포커
- increment operator
- delete function
- vector capacity
- this call
- c++ multi chatting room
- C++
- virtual inheritance
- virtual destructor
- suffix return type
- conversion constructor
- new&delete
- diamond inheritance
- base from member
- constructor
- std::vector
- placement new
- discord bot
- pointer to member data
- member function pointer
- std::endl
- vector size
- std::ostream
- return by reference
- std::cout
- Today
- Total
목록2024/08 (43)
I'm FanJae.
1. Discord Bot 초기 설정 1-1. 개발자 포털 설정.Discord Developer Portal에 들어가면 기본 창으로 Application 프로젝트를 설정하는 창이 뜬다. ① 좌측 Applications를 누르고 New Application을 누르면 디스코드 애플리케이션 프로젝트 이름을 생성하는 창이 뜬다.② 봇 이름이 아닌 프로젝트 명을 적어서, 구분할 수 있도록 작성한다.- 위와 같이 프로젝트가 생성됨을 확인할 수 있다. 이를 클릭한다. ③ 봇 토큰 리셋- 봇 토큰을 리셋 한다.- 이 토큰 값은 코드상에서 봇을 접속하기 위한 고유키이다. 즉, 누구에게 함부로 공개하면 안된다. ④ 봇 추가- OAuth2를 누른 이후 페이지를 아래로 조금 더 내려보면, SCOPES와 BOT PERMISS..
0. 게임 모드 설명 및 Draft Bot의 필요성0-1. 게임 모드 설명- 'EA FC'는 피파라는 이름으로 더 유명한 게임이다. (보통 EA FC라는 이름은 낯설어 해도 피파는 알고 있다..)- 축구 게임하면 가장 많이 떠올리는 '피파'가 라이센스 문제로 EA SPORTS FC로 명칭을 바꾼것이다.- 이 게임은 EA FC 온라인이라는 국내 서비스 중인 작품과 'EA SPORTS FC 시리즈'라고 해서 두 가지의 시리즈가 있다.- 여기서 Proclub 모드는 EA SPORTS FC 시리즈에 있는 게임 모드이다.- 축구라는 게임이 11명이 하는 것처럼 이 모드는 총 22명이 모두 사람이다. - 골키퍼, 수비수, 미드필더, 공격수가 모두 각각의 사람인 것이다.- 이러한 이유로 주로 '비슷한 시간대' 디스코..
열혈 C++ 프로그래밍(윤성우 저)의 연습문제를 다뤘습니다.개인의 연습을 위해 다룬 것이며, 예제에 실제 공개된 코드는 첨부하지 않았습니다. 1. Chatper 01. C언어 기반의 C++1-1. C++ 기반의 데이터 입출력 ① 사용자로부터 총 5개의 정수를 입력 받아서, 그 합을 출력하는 프로그램을 작성해 보자, 단 프로그램의 실행은 다음과 같이 이뤄져야 한다.1번째 정수 입력: 12번째 정수 입력: 23번째 정수 입력: 34번째 정수 입력: 45번째 정수 입력: 5합계: 15 #include int main(void){ int n; int sum = 0; for (int i = 1; i > n; sum += n; } std::cout ② 프로그램 사용자로부터..
본 내용은 뇌를 자극하는 윈도우즈 시스템 프로그래밍(윤성우 저) 책을 보고 정리한 내용입니다.개인이 학습한 내용을 정리할 목적으로 게시한 것으로 책의 상세한 내용은 직접 구매하여 확인을 부탁드립니다. 1. 문자셋(Character Sets)의 종류와 특성① SBCS(Single Byte Character Set)- 문자를 표현하는데 1바이트를 사용한다.- 아스키 코드는 SBCS의 종류 중 하나이다.② MBCS(Multi Byte Character Set)- 문자를 표현하는데 있어서 동일한 바이트 수를 적용하는 것이 아닌, 다양한 바이트 수를 사용해서 멀티다.- 한글은 2바이트, 영문은 1바이트를 사용한다.- 우리나라의 경우 MBCS를 기반으로 문자를 표현한다.- 안정성의 문제가 발생할 수 있음.③ WB..
1. stack unwinding#include struct Object { ~Object() { std::cout - 예제의 호출이 상당히 복잡해 보이지만, 실제로는 크게 어렵지 않은 내용이다.- 이들의 호출 관계를 조금 더 그림으로 표현해보면 아래와 같다.- 이 예제는 결국 f3()에서 throw가 일어남에 실행 결과를 보면, finish는 출력되지 않는다.void f3() { std::cout - 즉, 달리 말하면 f3()에서 바로 main 함수로 돌아왔다.- 그렇다면, f2, f1()에 있던 객체는 파괴 될것인가 파괴되지 않을 것인가? 에 대해 생각해볼 수 있다.- 이제야 실행 결과를 올려보면 아래와 같다.1-1. Stack unwinding(스택 풀기)란?- 이처럼 예외가 발생해서 catch로..
1. Error Handlingvoid db_backup(){ // 서버에 접속해서 DB를 백업하는 // 기능 수행하다가 오류가 발생했다면?}void db_clear(){}int main(){ db_backup(); db_clear();}- 함수에서 특정 기능을 수행하는 도중 오류가 발생하여, 처리해야 하는 경우 어떻게 할 것인가?① 함수 내에서 프로그램(프로세스)를 종료 - std::exit() 등의 함수 사용- 보통, 심각한 경우 사용한다.② 호출자에게 오류가 발생했음을 알린다.- 일반적인 상황에서 많이 사용한다. 1-2. 호출자에서 함수가 실패 했음을 알리는 방식① 약속된 함수 반환 값(-1 등)으로 실패 전달.- C 언어 및 대부분의 언어에서 사용② 예외(Excep..
1. Algorithm#include #include #include int main(){ std::list s = {1,2,3,4,5}; std::vector v = {1,2,3,4,5}; // 각 컨테이너에서 3을 검색하고 싶다고 할때 어떻게 할까}- 컨테이너에 검색기능을 추가한다고 가정해보자 ① 멤버 함수 find를 제공s.find(3);v.find(3);(1) 장점- 사용하기 쉽다 (2) 단점- 이 방법은 사용하기는 쉽지만, 동일한 기능을 하는 모든 컨테이너에 넣어야 한다.- 또한, 새로운 함수(기능)을 추가혀려면 모든 컨테이너에 추가해야 한다. ② 멤버 함수가 아닌 일반 함수(템플릿) 형태로 find를 제공std::find(s.begin(), s.end(), 3);std::f..
1.반복자(iterator)#include #include int main(){ int x[5] = {1,2,3,4,5}; int* p1 = x; ++p1; std::cout - 배열은 연속된 메모리이다.- 1번째 요소의 주소를 담은 포인터 변수만 있으면, ++, * 연산으로 모든 요소에 접근할 수 있다.- 반면 일반적인 list는 연속된 메모리가 아니므로 ++연산등을 통한 요소 접근은 불가능하다.- 그러나, std::list는 연속된 메모리가 아니지만, 반복자(iterator)만 있으면 ++, * 연산으로 모든 요소에 접근이 가능하다.- p2 자체가 포인터는 아니다.- 내부적으로 포인터 멤버 데이터가 있고, operator++, operator* 연산자를 재정의해 포인터처럼..
1. vector capacity vs size#include #include void check(const std::vector& v) { std::cout size 이므로 // 빠르게 동작 check(v); // c : 5 s : 4 v.shrink_to_fit(); check(v); // c : 4 s : 4 v.push_back(0); // capacity == size 이므로 메모리 재할당 필요 // 느리다. check(v); // c : ? s : 5 v.clear(); // 메모리를 제거하지는 않음. // size 만 0으로 check(v); v.resize(0); // 또는 v.clear() v.shrink_to_fit(); check(v);}- v..
본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. - Basic에서는 STL에서 가장 기본이 되는 얘기만 다뤄진다.- 이후 별도 STL 카테고리에서 STL에 대해서 조금 더 다양한 얘기를 할 것이다.- 여기서는 C++ 개발자가 알아야하는 핵심 내용이나 사용법 위주로 다룬다. 1. STL의 역사- 1983년 처음 발표되고, C++ 1차 표준 (C++98) 발표 및 자료 구조와 알고리즘 위주의 라이브러리가 추가되었다.- 이후 C++11 / 14 / 17에 thread, smart pointer, chrono, file 등이 추가된다.- C++ 20에는 Range, Concept 등의 라이브러리가 추가된다.- C++ 23 / 26에서 generator, excepted, Netwo..