IT 프로그래밍/C++ 51

[따배시 7.12]재귀적 함수 출력

함수 예시#include using namespace std;void countDown(int count){ cout 이런 재귀적을 할 때 해당 코드는 계속해서 재귀적으로 반복이 되기 때문에 정상적인 코드가 아닙니다. 스택 오버플로우가 날 수 있으니 항상 조심해서 사용해야 합니다.  이 코드를 0까지만 출력이 되도록 해보도록 하겠습니다.#include using namespace std;void countDown(int count){ cout 0) countDown(count - 1);}int main(){ countDown(5); return 0;}이럴경우 5 4 3 2 1 0 이 나오게 됩니다.

[따배시 C++ 8.6] 소멸자 destructor

소멸자란? 소멸자는 return 타입이 없습니다. 그리고 파라미터 또한 없습니다. #include using namespace std; class IntArray { private: int* m_arr = nullptr; int m_length = 0; public: IntArray(const int length_int) { m_length = length_int; m_arr = new int[m_length]; } ~IntArray() { if (m_arr != nullptr) delete[] m_arr; delete[] m_arr; } int size() { return m_length; } } int main() { while (true) { IntArray my_int_arr(10000); del..

[C++] 멤버함수 혹은 메서드

클래스라는 것은 관련있는 데이터들을 하나의 단위로 묶어두기 위한 것입니다. 하지만 이것이 전부는 아닌데요. 서로 관련있는 데이터들 뿐만 아니라, 그 데이터와 관련이 깊은 함수들도 함께 묶어둘 수 있습니다. 이렇게 함으로써 코드의 응집도를 높이고 결합도를 낮출 수 있습니다. #include #include #include #include using namespace std; class Term { public: int coef; int expo; int calcTerm(int x) { return coef * pow(x, expo); } void printTerm() { cout

[C++]클래스와 객체

클래스의 등장 배경 전화번호부 프로그램을 만든다고 가정하면 한 사람의 이름과 전화번호는 항상 같이 붙어다녀야 하는 데이터입니다. 이 두 가지 데이터를 서로 별개의 변수에 저장하면 우리가 이름 데이터를 옮길 때마다 전화번호 데이터도 따로 옮겨줘야 합니다. 만약 각 사람에 대한 이름과 전화번호 뿐만 아니라 주소, 이메일 등 여러가지 데이터를 저장한다면 이 불편함은 더 심해질 것입니다. 인덱스 메이커 프로그램에서도 하나의 단어와 그 단어가 등장한 라인 번호들은 항상 같이 붙어다녀야 하는 데이터입니다. 이런 식으로 서로 관련있는 데이터를 하나의 단위로 묶는 것은 편할 것입니다. 이것이 클래스라는 개념이 등장하는 가장 기본적인 이유입니다. 예시코드 class SalesData { public: string isb..

[C++] Inline 함수 , 함수 오버로딩, typedef

inline 함수 inline함수는 함수를 빨리 쓰기 위해서 씁니다. 이 키워드를 함수 앞에 붙이면 컴파일러에게 해당 함수가 호출되는 곳에 함수의 코드를 직접 삽입하도록 지시하기 때문에 오버헤드를 줄이고 실행 시간을 줄여주는데요. 함수 호출을 수행하는 대신에 함수 내용이 호출 지점에 직접 삽입되면서 성능 향상을 가져올 수 있습니다. 짧은 코드로 이루어진 함수나 작은 규모에 함수에는 inline을 사용하는 것을 권장하지만 긴 함수는 성능을 저하할 수 있습니다. inline int min(int x, int y) { return x > y ? y : x; } int main() { cout

[따배시 7.1 ~ 2 ] 매개변수와 실인자의 구분, 값에 의한 전달

#include using namespace std; int foo(int x, int y); int foo(int x, int y) { return x + y; } int main() { int x = 1, y = 2; foo(6, 7); foo(x, y + 1); } foo(6,7) 이렇게 사용할 수도 있으며 이는 argument라고 부르며 실인자라고 부르기도 합니다. (actual parameters) 이렇게 x라는 변수를 직접 넣으 수도 있습니다. x=1이라는 값을 받아서 매개변수 x로 전달이 됩니다. 항상 x에 있는 값만 여기로 전달이 되는 것은 아닙니다. y+1에서는 2 에서 1을 더하면 3이듯이 3이라는 값이 argument고 이 argument가 y parameter로 전달이 되는 것입니다..

참조에 의한 호출 c++

불필요한 부분을 잘라낼 때 trim을 하기 때문에 함수 이름을 trim이라고 합니다. #include #include #include #include #include #include using namespace std; int main() { ifstream infile("input35.txt"); string str; vector words; while (infile >> str) { str = trim(str); if (str.length() > 0); { tolowercase(str); auto it = find(words.begin(), words.end(), str); if (it == words.end()); words.push_back(str); } } infile.close(); for (..