Study/C&C++(7)
-
[C++] 다형성,virtual 함수
다형성이란? 네이버 지식 백과에서는 다형성(polymorphism)이라는 단어는 원래 '여러 개의 형태를 갖는다'라는 의미의 그리스어에서 유래했다. 또 사전에서 찾아보면 poly(하나 이상), morph(형태)가 합성된 단어로 '하나 이상의 형태'를 뜻한다. [네이버 지식백과] 다형성 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 김치수) 이렇게 나와있다. 음.. 하지만 이런게 프로그램을 만들때 왜 필요할까?? 간단히 동물들의 울음 소리를 출력하는 프로그램을 만든다 가정해보자, 우선 각 동물들의 class를 만들고 특성에 맞는 울음소리를 출력해주는 함수 speak() 를 가진다. class Cat { private: string name; public: Cat(const string& nam..
2021.03.03 -
[C++] std::cin, getline()
일반적으로 C++에선 cin과 getline()으로 문자열을 입력 받는다. 이글에서 1.cin 으로 std::string 에 문자열을 받는 방법 2.getline 으로 std::string 에 문자열을 받는 방법 3. 둘의 차이와 유의사항, 해결법 (cin.ignore) std::cin cin 은 기본적으로 버퍼에서 공백' '으로 구분하여 변수에 넣어준다. string str1; cin >> str1; string str2; cin >> str2; //cin >> str1 >> str2; // 입력을 공백 으로 구분하여 각 변수에 들어감 위 코드에서 하나씩 받을때, 같이 받을때 똑같이 공백으로 구분되어 들어간다. getline() 헤더에 포함되어있는 getline() 함수는 버퍼에서 '\n'(개행문자) ..
2021.02.22 -
[C++]R-value Reference,move Sementics
R-value Reference,move Sementics C++ 에서는 R-value Reference 를 지원한다. 다음과 같이 &&기호를 이용하여 사용할 수 있다. #include using namespace std; void doSomething(int& lef) { cout
2021.02.20 -
[C++] l-value,r-value
C++에서 코드를 작성 할때. 변수를 선언하고 값을 넣고, 리턴값을 받아오는 일을 자연스럽게 하게된다. value ,값의 위치,특성에 따라 l-value,r-value(좌측값 우측값) 으로 나뉘는데 이번에는 각각 value들이 어떤 의미인지 알아 보겠다. l-value 메모리를 할당받고 Scope 안에서 항상 접근, 수정 가능한 것. ex) 변수들, 객체의 instance r-value 임시적으로 잠간의 expression,표현 후 바로 사라지는 값. ex) 상수, 1,2 .. , 단순 자료형 return 값. int func() { int a= 1; reutnr a; } void main() { int x = 1; int y = func(); // r-value의 주소는 참조 할수 없다 int *p =..
2021.02.14 -
[C++] C -style string , std::string
C -style string string , std::string 코딩을 하다보면 종종 문자열을 다뤄야 하는 상황이 있다. C++ 에선 2가지 방법을 지원 하는데 C -style string string, std::string 에대해 알아보려 한다. C -style string C - style string 은 끝에 null을 가지는 char 형 배열이다. C++ 에서는 char 형 배열 마지막에 항상 null(''\0')을 추가해 준다. char str[] = "1234567"; cout
2021.02.11 -
[C++] Stack and Heap(feat. Memory Leak)
Stack and Heap 프로그램 실행시 컴퓨터가 내부에서 사용하는 메모리들중 Stack과 Heap이 있다. 이번에는 우리의 코드가 Stack과 Heap에 어떻게 들어가는지 알아보고 나아가 Memory leak 에대해 알아보겠다 기본구조 이처럼 코드가 메모리의 제일 아래에 있다 하면. 프로그램이 시작될때 .BSS - 초기화되지 않은 전역,Static변수들이 차지한다. .Data - 초기화된 전역,Stacic변수들이 차지한다. 그후, 프로그램이 실행되면서 Stack 과 Heap에 메모리를 쓰게 된다. Stack Stack 은 프로그램이의 코드들이 한줄씩 실행되면서 각각의 Scope, 그내부의 Local variable 이 들어오는 자리이다. ex) { }, functions, for{} while{} 제..
2021.02.11