본문 바로가기
반응형

전공공부/C++9

[C++] 8. C++ operator(=) overloading를 통한 Deep Copy, this pointer 앞서 C++의 operator overloading에 대하여 알아봤습니다. 직관적으로도 이해하겠지만 = operator는 값을 그대로 대입한다고 생각하면 됩니다. 단, 단순히 데이터만 가지고 있는 클래스는 큰 문제가 되지 않겠지만클래스 급 프로그래밍을 하다보면 포인터를 쓰지 않는 경우는 거의 없을 것입니다. 그냥 그대로 값을 그대로 복사해버리면 두 개의 객체는 동일한 주소를 가진 포인터가 되어객체 A에서만 값이 변경되도 같은 주소 값을 가졌기때문에 객체 B의 포인터 값도 변경되게 됩니다. 따라서, 아래 오른쪽 코드 처럼 새로운 포인터 주소를 만들어주고 그 값을 복사해줍니다.위 Deep Copy에 보면 this라는 키워드가 나옵니다.this는 해당 클래스에서 자기자신(클래스)를 나타내는 키워드입니다. 따라.. 2024. 6. 3.
[C++] 8. C++ friend keyword, operator overloading 오랜만에 C++ 포스팅이네요 ㅎㅎ대학교 이후로 갑자기 보니깐 C++ 너무 어렵고, 공부를 어떻게 했었는지 기억도 안납니다...ㅠㅠ 모든 현재의 대학생, 대학원생분들 리스펙합니다... 아니 그냥 학생분들... 모두... friend keyword는 해당 클래스의 private한 것을 public하게 사용하기 위함입니다.즉, 해당 클래스의 멤버변수(private)를 접근하려면 보통 멤버함수(public)을 통해서 가져와야 합니다. 단, 메인함수에서 정의한 함수를 해당 클래스에 freind 선언을 하면 해당 클래스의 멤버변수(private)를쉽게 가져와서 사용할 수 있습니다.주의 사항으로는 선언부에만 freind 키워드를 붙이고 선언부를 class로 보냅니다.정의부는 그대로 메인함수쪽에 작성해줍니다. 말 그대.. 2024. 5. 23.
[C++] 7. C++ Class Static Member(static 멤버변수, 멤버함수) C언어 때도 이미 알아봤던 statci(정적) 변수입니다. 지역변수는 해당 지역에서만 접근 및 변경 가능하며 전역변수는 모든 곳에서(프로그램 시작부터 끝까지) 접근 및 변경가능합니다. 이 두 가지 성질을 합친 static 변수의 경우 해당 지역에서만 변경 가능하지만 모든 지역에서 접근 가능한 성질을 가집니다. 단, 결국 Class의 멤버변수이기 때문에 private, public 성격을 그대로 가져오게 됩니다. 하나의 Class를 정의하면 해당 Class의 성질을 토대로 여러 개의 객체를 생성하게 되는데 멤버변수를 static으로 선언하게 되면 모든 객체가 동일한 값을 가지게 됩니다. 따라서, 객체와 무관하게 Class 생성 횟수, 특정함수 호출빈도 등을 Tracking할 때 주로 사용됩니다 ㅎㅎ sta.. 2024. 4. 4.
[C++] 6. C++의 핵심 Class(캡슐화, 생성자 오버로딩, 멤버변수, 멤버함수) 클래스는 C++의 가장 중요한 특성인 객체 지향 프로그래밍의 중요한 개념입니다. 캡슐화, 상속, 다형성 등을 클래스를 통해 구현 가능합니다. 클래스의 코드는 2가지 파일을 통해 작성합니다. 헤더파일(.h): Class의 정의부로 멤버변수 및 멤버함수를 선업합니다. - Class의 ADT(사용설명서)로 불리웁니다. 소스파일(.cpp): 멤버함수의 정의가 들어가며 외부에 공개되지 않습니다. 멤버변수는 아래 3가지로 분류할 수 있습니다. private: 외부에 공개하지 않음(멤버변수) public: 외부에 공개함(멤버함수, 생성자) protected: 상속할 멤버함수 등 즉, Class는 제품의 설계도이고 Instance(객체)는 생산된 제품이라고 생각하시면 됩니다. Class의 중요한 특성은 Encapsul.. 2024. 3. 19.
반응형