오븐 노트

[C++] delete(삭제된 함수) 본문

Develop/C++

[C++] delete(삭제된 함수)

오 븐 2023. 12. 13. 22:13
#include <iostream>
using namespace std;
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
#include <algorithm>

class Knight
{
public:

private:
	// 정의되지 않은 비공개(private) 함수
	// 외부에서는 복사연산자가 막히지만 내부에서는 막히지않는다
	//void operator=(const Knight& k)
	//{

	//} // 구현부를 만들면 내부에서 사용이 가능하고

	//void operator=(const Knight& k); // 없애면 불가하다

	void operator=(const Knight& k) = delete; // 함수 삭제를 원할 경우 delete를 사용한다면, log에서 더욱 명확하게 나타내준다.

	//friend class Admin; // friend 대상자에게 private를 열어줌. (사실 사용하는거 자체가 대부분 구조에 문제가 있는것)
	
	//operator&() = delete; // null포인터를 만들 경우, 주소값을 꺼내려는 동작도 막을 수 있다.

private:
	int _hp = 100;
};

class Admin
{
public:
	void CopyKnight(const Knight& k)
	{
		Knight k1;

		// 복사 연산
		k1 = k;
	}
};

int main()
{
	Knight k1;

	Knight k2;

	// 복사 연산
	//k1 = k2;

	Admin admin;
	admin.CopyKnight(k1); //  문법적으로는 문제가 없지만 구현부가 없어서 링크 에러 발생.

	return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] 오른값 참조 (rvalue reference)  (0) 2023.12.30
[C++] override, final  (0) 2023.12.28
[C++] enum class  (0) 2023.12.13
[C++] using  (0) 2023.12.07
[C++] nullptr  (0) 2023.12.07