this 포인터
-> this가 사용된 객체의 주소를 저장하고 있다.
-> 다음과 같이 CObj의 객체를 통해서 확인을 해보면 주소가 같은 것을 확인할 수가 있다.
class CObj
{
public:
void Func()
{
cout << "this: " << this << endl;
}
};
void main()
{
CObj obj1;
CObj obj2;
cout << "&obj1: " << &obj1 << endl;
obj1.Func();
cout << "----------------------------------" << endl;
cout << "&obj2: " << &obj2 << endl;
obj2.Func();
}
this 포인터의 사용
class CObj
{
public:
CObj() : m_pBuff(nullptr) {}
CObj(char* _pBuff)
{
this->m_pBuff = new char[strlen(_pBuff) + 1];
strcpy_s(this->m_pBuff, strlen(_pBuff) + 1, _pBuff);
}
~CObj()
{
if (this->m_pBuff)
{
delete[] this->m_pBuff;
this->m_pBuff = nullptr;
}
cout << "소멸자 호출" << endl;
}
}
extern 키워드
-> 외부파일(.cpp 또는 .h) 어딘가에 전역 변수가 존재한다고 알려주는 역할을 한다.
#include "stdafx.h"
extern int a;
void main()
{
cout << a << endl;
}
-> extern 키워드는 보통 찾아내기 쉽게 헤더 파일을 따로 만들어서 명시해놓는다고 한다.
#pragma once
#ifndef __EXTERN_H__
#define __EXTERN_H__
extern int a;
endif//!__EXTERN_H__
extern 키워드를 사용할 때는 아무 cpp 파일에 해당 자료형과 변수의 이름을 똑같이 전역 변수로 선언을 해야한다.
그렇지 않으면 링커 오류가 발생한다.
'Programming > C++ Basic' 카테고리의 다른 글
C++ 상속성 (0) | 2020.09.17 |
---|---|
C++ friend (0) | 2020.09.17 |
C++ 복사 생성자(얕은 복사, 깊은 복사) (0) | 2020.09.16 |
C++ static과 클래스 , 멤버 함수 (0) | 2020.09.15 |
C++ const 와 클래스, 멤버 함수 (0) | 2020.09.15 |