본문 바로가기

개발공부/C++

(19)
얕은 복사와 깊은 복사 #include #include using namespace std; class MyString { public: char* m_data = nullptr; int m_length = 0; public: MyString(const char* source = "") { assert(source); m_length = std::strlen(source) + 1; m_data = new char[m_length]; for (int i = 0; i < m_length; ++i) { m_data[i] = source[i]; } m_data[m_length - 1] = '\0'; } char* getString() { return m_data; } int getLength() { return m_length; } ..
형변환을 오버로딩하기 #include using namespace std; class Cents { private: int m_cents; int count = 1; public: Cents(int cents = 0) { m_cents = cents; } int getCents() { return m_cents; } void setCents(int cents) { m_cents = cents; } operator int() { cout
키워드 : friend #include using namespace std; class B;//forward declalation class A { private : int m_value = 1; friend void doSomething(A& a, B& b); }; class B { private: int m_value = 2; friend void doSomething(A& a, B& b); }; void doSomething(A& a, B& b) { cout
정적 멤버 #include using namespace std; class Something { private: static int s_value; public: static int getValue() { return s_value; } int temp() { return this->s_value; } }; int Something::s_value = 1024; int main() { cout
다양한 반환 값들 #include using namespace std; int getValue(int x) { int value = x * 2; //이 함수에서만 유효한 value가 선언이 되고 3 * 2를 연산하여 복사하여 대입된다. return value; } int main() { int value = getValue(3); //value가 선언이 되고 해당 함수의 리턴값이 복사하여 대입된다. return 0; } 안전하지만 복사와 변수의 생성등이 여러번 일어난다. #include using namespace std; int* getValue(int x) { int value = x * 2; return &value; } int main() { int value = *getValue(3); return 0; } 반환..
다중포인터와 동적 다차원 배열 int main() { const int row = 3; const int col = 5; const int s2da[row][col] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} }; int *r1 = new int[col] {1, 2, 3, 4, 5}; int *r2 = new int[col] {6, 7, 8, 9, 10}; int *r3 = new int[col] {11, 12, 13, 14, 15}; int **rows = new int*[row] {r1, r2, r3}; for(int r = 0; r < row; ++r) { for(int c = 0; c < col; ++c) { cout
포인터와 참조의 멤버 선택 { Person person; person.age = 5; person.weight = 30; Person &ref = person; ref.age = 15; Person *ptr = &person; ptr -> age = 30; (*ptr).age = 20; Person &ref2 = *ptr; ref2.age = 45; std::cout
참조변수 reference variable int main() { int value = 5; int *ptr = nullptr; ptr = &value; int &ref = value; cout