C/C++(3)
-
inline 함수
c++의 inline 함수는 함수 호출의 오버헤드를 줄이기 위한 기능이다. 다른 언어들에서는 함수를 호출 했을 때 스택에 올리면서 함수를 호출하게 된다. 그래서 간단한 함수를 이용할 때도 항상 스택에 올리게 되는데 그 때의 overhead를 막기 위해 inline을 이용한다. inline은 코드 복사 붙여넣기와 비슷한데 컴파일러가 읽은 후에 그냥 코드를 복사 붙여넣기 하여 함수에 올리지 않고 이용하게 된다. inline int getNum() { return num; } inline void print() { cout
2023.08.24 -
c++ string class 구현
알아야 할 것 *this 사용 이유 하나의 클래스에서 생성된 인스턴스는 각자 고유의 주소를 가진 메모리 공간을 갖지만, 멤버함수는 모든 인스턴스가 공유한다. 멤버 함수는 자신을 호출한 객체를 인수를 통해 전달 받아야 한다. 그 때 전달해주는 것이 자신의 포인터 *this이다. 들어갈 함수 문자열을 추가해주는 insert 함수 문자열을 삭제하는 erase 함수 문자열에서 어떤 문자를 찾는 find함수 새로운 문자를 넣고 할당하는 assign함수 insert 함수 /* add after loc index*/ Mystring& Mystring:: insert(int loc, Mystring& str) { if(loc = this->stringlen) { cout my_string; thi..
2023.08.22 -
[C언어] 포인터 및 메모리 정리
포인터의 의미 포인터는 주소를 저장하는 것을 의미한다. 이것만 알고 있다면 헷갈릴 필요가 없다. 포인터의 용도, 유용성 포인터는 값들을 복사하는것이 아니라 해당 값을 가지고 있는 주소를 복사해오기 때문에 큰 용량의 데이터를 다룰 때 유용하다. C언어에서 함수의 반환값은 하나이기 때문에 둘 이상의 반환을 하기 위해서는 포인터의 이용이 필수적이다. 반환한다기보다는 함수 내에서 원본을 수정하여 둘 이상을 반환하는 효과를 보는 것이다. 동적 메모리를 할당할 때 포인터가 필수이다. 동적 메모리 할당 시에 기존 정적 메모리와 할당하는 위치나 방식이 다르기도 하고 또 크기도 다르므로 꼭 알 필요가 있다. 연결리스트, 트리 등 데이터 구조에서 포인터의 이용이 필수이다. 역참조 연산자와 포인터 선언 포인터의 선언은 in..
2022.08.18