c,c++/c++ 관련 개념 및 문법(11)
-
c++ stream 상태
std:: ios 입출력 클래스 비트 플래그 goodbit eofbit failbit badbit 메서드 good() eof() fail() bad() 로 상태를 나타낸다 cin에서 알아볼 수 있다. #include #include using namespace std; void printStates(const std::ios& stream) { cout
2023.08.28 -
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++ 문자열 parsing
C++ 문자열 parsing을 위해 3가지 메서드를 소개한다. 1) substr 메서드 2) find 메서드 3) getline 메서드 1) substr 예시 code string str = "stringParse"; string result = str.substr(0, 6); // result : string 0 ~ 5의 인덱스에 해당하는 문자열을 가져오게 된다. 2) find 예시 code string str = "get stringhind"; int num = str.find("stringhind"); //num : 4 stringbind의 시작 위치를 반환한다. 3) getline 예시 cin 이용 시 공백 문자를 입력하면 공백 문자 전까지만 읽어들이게 된다. getline을 이용하면 공백을 포함..
2023.08.22 -
복사 생성자와 소멸자
c++에서 동적 할당을 하려면 new, delete가 있어야한다고 했다. 그런데 클래스에서 동적할당을 하고 있는 것이 있다면 (ex 생성자에서) delete를 해주어야 하는데 해줄 수가 없다. 이것들은 delete로 꼭 해제를 해주어야 하는데 그것을 소멸자에서 해준다. classname::~classname() { if(this->dynamicValue != NULL) { delete dynamicValue; //if dynamicValue is array delete[] dynamicValue } } 소멸자는 객체가 사라질 때 호출된다. 복사 생성자는 객체 a가 있을 때 다른 객체에서 객체 a를 상수 레퍼런스로 받아오는 것이다. 복사 생성자의 문제는 원본 객체에서 동적 할당 받은 변수가 소멸자에 의해 ..
2023.07.15 -
explicit 키워드, mutable 키워드
c++ - C++의 explicit 키워드는 뭘 하는 건가요? | 프로그래머스 커뮤니티 (programmers.co.kr) C++의 explicit 키워드는 뭘 하는 건가요? 제가 인터넷을 돌아다니다가 어떤 답변에서 밑에 C++ 코드를 봤는데 이 explicit은 무슨 일을 해주는 건가요? 소스코드 class String { public: explicit String (int n); //allocate n bytes String(const char *p); // initializ qna.programmers.co.kr 형변환을 모두 명시적으로 해주도록 하는 것이다. mutable 키워드 const 함수는 멤버변수의 값들을 바꿀 수 없다고 배웠는데, 멤버변수를 mutable로 선언하였다면 const 함수에..
2023.07.11