본문 바로가기

전체 글224

[c++개념공부]복사 생성자 (깊은복사 얕은복사), 소멸자 💻 new와 malloc의 차이점 new 의 경우 객체를 동적으로 생성하면서 동시에 자동으로 생성자를 호출하는 특징이 있다. 예시코드 Marine* marines[100]; marines[0] = new Marine(2, 3); marines[1] = new Marine(3, 5); marines[0]->show_status(); marines[1]->show_status(); //그외 다양한 행동 후 delete marines[0]; delete marines[1]; new 연산자를 통한 메모리 할당이 실패할 경우는 예외가 발생하여 프로그램이 즉시 종료된다. 소멸자(Destructor) 우리가 생성했던 객체가 소멸될 때 자동으로 생기는 소멸자. 생성자 : Marine() 소멸자 : ~Marine() 객.. 2023. 1. 27.
[c++개념공부]함수 오버로딩, 생성자, default 💻함수의 오버로딩 c에서 같은 이름을 가진 함수는 불가능 c++ 에서는 같은 이름을 가진 함수가 여러 개 가능하다. c++에서 같은 이름의 함수를 호출할 때 구분하는 방법 : 함수를 호출할 때 사용하는 인자를 보고 결정한다. c++ 에서는 컴파일러가 알아서 적합한 인자를 가지는 함수를 호출해준다. 단 정확하게 인자가 일치하지 않는다면 가장 근접한 함수를 찾는다. c++ 컴파일러에서 함수를 오버로딩하는 과정! (단, 같은 과정에서 2개 이상 일치 시 오류 발생) 자신의 타입이 일치하는 함수를 찾는다. 정확하게 일치가 없는경우 char, unsigned char, short → int unsinged shot 는 크기에 따라 int 또는 unsigned int float → double Enum → int .. 2023. 1. 27.
[c++개념공부]참조자와 이름공간 💻 이름공간(namespace) std란 : c++의 표준라이브러리의 모든 함수, 객체들이 정의되어 있는 이름공간(namespace)이다. 이름공간의 존재이유 : 같은 이름의 함수들을 사용하기 위해서! (모듈화 프로그래밍을 더 편리하게 하기 위해서 이다.)코드가 길어질수록 중복된 이름을 가진 함수들이 많아진다. C++ 에서는 이를 구분하기 위해, 같은 이름이라도, 소속된 이름 공간이 다르면 다른 것으로 취급한다. 즉 C++에서는 같은이름의 함수를 이름공간만 다르게해서 사용이 가능한 것이다. 예시모음 이름공간 정의 예시 //header.h 내부 예시 namespace header1 { int foo(); // 사용할 아무 함수나 적어놓는다. void bar(); } //다음과 같이 정의한 header.h .. 2023. 1. 27.
[c++개념공부]동적할당과 class 💻동적할당newc언어의 malloc 과 같은 기능을 하는 c++ 의 함수라고 보면된다. 단 malloc 과 다른점은 객체를 동적으로 생성하면서 동시에 생성자를 호출한다는 특징있음.사용법T* pointer = new T[size];예시 std::cin >> arr_size; int *list = new int[arr_size]; Deletedelete[] list; 이렇게 사용해주면 지워진다.오직 new 로 만든 공간만 delete 를 사용할 수 있다.객체지향 프로그래밍프로그래밍의 역사 1세대 (ENIAC) : 진공관을 조작해서 코딩함. 수정하기 위해서는 19000개에 다라는 진공관을 확인했어야 함2세대 (Assembly languege) : 컴퓨터 내장 메모리가 생기고 실직적 프로그래밍을 할수 있고자 등.. 2023. 1. 27.
[c++개념공부] 생성자 초기화리스트, static 변수 함수, 레퍼런스 리턴 함수, this 생성자의 초기화 리스트 생성자의 초기화 리스트란 : 생성자 호출과 동시에 멤버 변수들을 초기화해준다. 생성자 초기화 리스 Marine::Marine() : hp(50), coord_x(0), \ coord_y(0), damage(5), is_dead(false) {} //두개는 같은 의미의 코드이다. Marine::Marine() { hp = 50; coord_x = coord_y = 0; damage = 5; is_dead = false; } 멤버 초기화 리스트 흥미로운점은 원래 생성자에서 멤버 변수와 같은 매개변수를 사용하면 안되는데, 생성자 초기화 리스트에서는 그게 가능하다. Marine::Marine(int coord_x, int coord_y) : coord_x(coord_x), coord_y(.. 2023. 1. 27.
[c++개념공부]참조자 참조자란#include int main() { int a = 3; int& another_a = a; another_a = 5; std::cout 2023. 1. 27.
백준 15650번 N과 M(2) (C++) 문제15650번: N과 M (2)https://www.acmicpc.net/problem/15650정답 코드#include using namespace std; int n,m; int ret[8]; int vis[8]; voidfunc(int s,int nu) { if (nu == m) { for(int i=0;i < m;i++) cout m; func(0,0); }문제 풀이의 흐름입력을 받는다.깊이에 도달하기 전까지 받는다. 오름 차순이라서 처음에는 0부터 넣어주고 아에 더 낮은 경우 루프를 돌지 않게 했다.더 낮은경우 루프를 돌지 않으니까 절대 중복은 있을 수 없어서 중복 검사는 따로 해주지 않았다.걸린시간dfs의 기초중에 기초문제!! 15분반성 및 고찰이전에는 많이 쉬운 문제여도 빠르게 풀어야한다는.. 2023. 1. 17.
백준 1182번 부분수열의 합(C++) 알고리즘을 풀며 반성.. 문제1182번: 부분수열의 합https://www.acmicpc.net/problem/1182정답 코드#include using namespace std; int n,s; int cnt; int num[21]; int ret[21]; // 결과를 담을 배열 voidfunc(int k,int tot) { if (k == n) { if (tot == s) cnt++; return ; } func(k+1,tot); func(k+1,tot+num[k]); } int main() { ios:: sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n>>s; for (int i=0;i > num[i]; func(0,0); if ( s== 0 ) cnt.. 2023. 1. 16.
[CPP함수 사용법]setfill 함수와 setw함수 사용법 공백으로 쭉 출력하는 걸 나는 당연하게도 앞에 공백을 쭉 출력해주고 사용하는 것이라고 생각했는데 아에 입력 자체를 바꾸기를 원했다.이 평가를 당하셔서 공유해주신 soo님께 깊은 감사를 전한다.std::setw(int n);예시코드// setw example #include // std::cout, std::endl #include // std::setw int main () { std::cout 2023. 1. 15.