Modern C++ - delete

이승덱·2021년 7월 21일

CPP

목록 보기
65/70
#include <iostream>

#include <vector>

#include <list>

#include <deque>

#include <map>

#include <set>

#include<algorithm>

using namespace std;

// Modern C++ (C++11 부터 나온 아이들)

// delete (삭제된 함수)

class Knight {

public:

private:

 // 정의되지 않은 비공개(private) 함수

 //void operator=(const Knight& k) { 

 // // private로 선언함으로써 밖에서 사용을 못하게 함.

 // // 하지만 내부에서는 사용 가능함.

 // // 아예 구현부를 안 만들어버리면 사용을 막을 수는 있지만 찝찝함.

 //} 

 friend class Admin; // 다른 클래스에게 private를 사용할 수 있도록 허락하는 문법

public:

 void operator=(const Knight& k) = delete; // 이 함수를 사용하지 않겠다.

 // 사용하려 하면 "삭제된 함수를 참조하려고 합니다" 라는 에러가 나옴

public:

 int _hp = 100;

};

class Admin {

public:

 void CopyKnight(const Knight& k) {

 Knight k1;

 k1 = k; //복사 연산자가 외부에서 사용되버림. 막히지 않음!

 // -> 우리는 복사연산자를 아예 아무도 사용 못하게 막고 싶음.

 }

};

int main()

{

 Knight k1;

 Knight k2;

 // 목표 복사연산자를 막고싶어요!

 //k1 = k2;

 Admin a;

 a.CopyKnight(k1);

 return 0;

}
profile
공부 기록용 블로그입니다

0개의 댓글