분류 전체보기
-
[C++] 복사생성자(copy constructor)C++ 2022. 12. 27. 17:22
C++의 객체 생성과 동시에 초기화하는 방식은 두 가지가 있음 (일반자료형도 해당되지만 객체를 대상으로 말하겠다) 1. 객체 간 대입연산 SoSimple sim1 = sim2; 2. 복사생성자 SoSimple sim1(sim2); 그리고 이 둘은 똑같다 1번으로 쓰면 2번으로 변경되어 실행된다 class Human { private: int NTRP; public: Human(int NTRP) : NTRP(NTRP) { // empty } void showNTRP() { cout name = new char[len]; strcpy(this->name, name); } // 복사생성자 Human(const Human& human) { int len = strlen(human.name) + 1; this->..
-
[C++] 생성자(constructor)C++ 2022. 12. 26. 17:09
[객체 생성방법] 1. 일반적인 객체 선언 방식( STACK -> 메모리관리 X ) // 1. 일반적인 변수 선언 방식(STACK) SimpleClass sc; 이 방식으로 하면 객체는 stack 에 올라가고 해당 중괄호를 벗어나면 객체는 알아서 소멸됨. 2. 동적할당(HEAP -> new/delete) // 2. 동적할당(HEAP) SimpleClass* ptr = new SimpleClass(); 이 방식으로 하면 객체는 heap 에 올라가고 이때는 사용자가 delete를 해주지 않는 이상 소멸되지 않음 즉, 직접 메모리 관리를 해줘야함 [객체 생성 과정] 이는 생성자가 호출되었을때 실행되는 과정들임 1. 메모리 공간의 할당 2. Member Initializer를 이용한 멤버변수 초기화 3. 생성자..
-
[C++] classC++ 2022. 12. 24. 00:22
[객체지향 Object Oriented Programming] C에서는 struct로 사용한 구조체에 오직 "변수만" 선언이 가능했음 typedef struct player { char name[10]; int age; int rank; }TennisPlayer; void forehand(TennisPlayer* p) { printf("%s forehand",p->name); } void backhand(TennisPlayer* p) { printf("%s backhand",p->name); } 따라서 변수와 함수가 따로 놀았다(함수를 구조체 외부에 선언해야했음) 그래서 구조체변수가 함수를 호출할 수 없고, 그저 자신의 멤버변수들만 관리할 수 있었다. 그래서 구조체의 멤버변수들을 바꾸려면 우리가 직접 함..
-
[C++] 참조자 (reference)C++ 2022. 12. 23. 13:51
C++로 넘어오면서 추가된 기능임 함수의 매개변수 type과 return type으로 개많이 쓰인다 인자를 참조형으로 받는 경우, 참조형으로 return하는 경우가 굉장히 많다 왜냐하면 매번 매개변수로 객체나 변수를 받을때 해당 함수에서 쓰일 또 다른 지역변수로 해당 타입을 생성해야하는데이러면 너무 비효율적이다 따라서 참조자 라는 기능을 만들어 위 과정을 생략하고 진행할 수 있게 한 것이다. 하지만 이에 따라 주의해야할 부분도 많음 그건 아래 설명ㅇㅇ [c++ reference] 참조자는 변수에 또 다른 이름을 부여하는 거임 즉, 할당된 하나의 메모리 공간에 둘 이상의 이름을 부여할 수 있게끔 나온 것 C에서는 하나의 변수를 참조하려면 그 변수명이나 포인터로 참조해야했음(참조방법 2가지) 하지만, C++..
-
[C++] basicsC++ 2022. 12. 23. 13:26
1. cout (console out ) std::cout 컴파일에러남 ㅇㅇ 따라서 각 모듈마다 namespace를 지정하여 컴파일 시 같은 이름의 함수가 존재해도 충돌이 안나게끔 해주는거다! namespace는 고유한 이름공간을 설정하기 위해 만든 것. class function 변수 등 다 선언가능 기존 동일한 이름의 것들과 충돌을 방지하기 위해 나온 기능 namespace는 함수나 구조체 클래스 변수 등의 소속을 정해주는 것 다른 namespace라면 같은 이름의 함수, 클래스, 변수를 가지고 있어도 상관 없다! 프로그램할때 using을 통해 어떤 namespace를 사용할지만 정해주면 문제가 없어진다 #include namespace mbappe { void name() { std::cout