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

+ Recent posts