프렌드 개념 잡기!!!

 

1. 프렌드 지정은 단방향이다.

 

내가 소영이한테 친구를 지정했어!!..
소영이는 나를 친구로 지정안했어!!..
난 소영이를 친구로 생각하니까 소영이가 요청하면 다 받아줘!!..
소영이는 나를 친구로 생각안하니까 내가 요청하는걸 안받아줘!..
이렇게 비참하게 생각하면 딱 와닿음.

 

2. 프렌드 지정은 전이되지 않는다. (EX 친구의 친구따위는 없다는거다)

3. 복수의 대상에 대해 동시에 프렌드 지정이 가능하다.

 EX ) A는 B랑 C랑 친구하고 싶어요!! +_+ 그럼

         B,C야 친구하자 는 안되고

         B야 친구하자;

         C야 친구하자;

라고 해야된다.

 

4. 프렌드관계는 상속되지 않는다. (엄마의 친구가 내 친구가 될 순 없자나? -_-..)

하지만, 여기서 예외가 있다.

나에겐 유니크한 부분과 엄마에게 유전받은 똑같은 부분이 있다.

그런 똑같은 부분에선 엄마의 친구와 공감대를 찾을 수 있는것처럼, 사용할수 있지만

나의 유니크한 부분은 안된다는거지.

 

 

 

아래의 예제를 보자.

 

#include <Turboc.h>

 

class Time;

class Date

{

private:

     int year,month,day;

public:

     Date(int y,int m,int d) { year=y;month=m;day=d; }

     void OutToday(Time &t);

};

 

class Time

{

     friend void Date::OutToday(Time &t);

        (time t) < 값 변경 불가능, 복사만.

        (tima &t) 만약 size가 200byte면 그 200byte와 값을 그대로 전달받음

                         받은 값을 수정 가능

        (time *t) 하면 주소값만 가지고 오는것이므로 4byte가 되서 size가 적절해짐

                        const time *t를 한다면? 참조만 가능해진다.

         그러니까 값을 변경해야된다거나 그대로 전달받아야 할때는 &가 제일 좋다.

private:

     int hour,min,sec;

public:

     Time(int h,int m,int s) { hour=h;min=m;sec=s; }

};

 

void Date::OutToday(Time &t)

{

     printf("오늘은 %d년 %d월 %d일이며 지금 시간은 %d:%d:%d입니다.\n",

          year,month,day,t.hour,t.min,t.sec);

}

 

void main()

{

     Date D(2005,01,02);

     Time T(12,34,56);

     D.OutToday(T);

}

 
 
 
 
 
프렌드 멤버 함수를 알아보자!!
 

class Some

{

     ....

     friend void Any::func(Some &S);

};

 

이렇게 하면 Any 클레스의 func멤버만 Some에 엑세스가 가능해지지.
 

프렌드 멤버 함수를 알아보자!!endMem

#include <Turboc.h>

 

class Time;

class Date

{

private:

     int year,month,day;

public:

     Date(int y,int m,int d) { year=y;month=m;day=d; }

     void OutToday(Time &t);

};

 

class Time

{

     friend void Date::OutToday(Time &t); // Date의 OutToday만 Time &t와 친구먹는다.

private:

     int hour,min,sec;

public:

     Time(int h,int m,int s) { hour=h;min=m;sec=s; }

};

 

void Date::OutToday(Time &t)  // Date의 outToday에서 Time &t를 참조한다.

{

     printf("오늘은 %d년 %d월 %d일이며 지금 시간은 %d:%d:%d입니다.\n",

          year,month,day,t.hour,t.min,t.sec);

}

 

void main()

{

     Date D(2005,01,02);

     Time T(12,34,56);

     D.OutToday(T);   // Data에 OutToady에서만 Time클레스를 참조할수있다

}

 

+ Recent posts