본문 바로가기
728x90

CPP33

[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.
[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.
[CPP 모듈 고민]SEARCH에서 출력 순서 가장 나중에 넣은걸 가장 뒤로 하고 싶은데 이렇게 해도 되는걸까?굳이 싶긴하다.이전코드print_row_sep(); int size(idx); if (is_full== true) size=8; for (int i=0;i < size;i++) { print_each_col(i); if (idx -size + i < 0) print_each_col(idx -size + i + 8); else print_each_col(idx -size + i); print_row_sep(); }수정코드print_row_sep(); int size(idx); if (is_full== true) size=8; for (int i=0;i < size;i++) { print_each_col(i); print_row_sep(); }.. 2023. 1. 15.
[Cpp 개념공부]__how to user input the noprintable ascii on cin (어떻게 cin에서 none printable를 받을 수 있을까)__ 과제 중 none printable 한 것들을 입력 받는 경우에 대한 예외를 처리하려고 하는데 그것을 입력 받는 방법을 몰라서 테스트를 못하고 있다.추가적으로 널을 입력 받는 방법도 궁금하다.일단 내가 해결 한 방법은 ctrl +v 를 입력하면 신기하게도 22 이렇게 나오고 ctrl m을 하면 원하는 0 값이 나온다.테스트 코드#include int main() { std::string command; while (true) { std::string command; getline(std::cin,command); std::cout 2023. 1. 13.
728x90