Advertisement
dllbridge

Untitled

Aug 22nd, 2023
871
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1.  
  2.  
  3. #include <stdio.h>
  4.  
  5.  
  6. ////////////////////////////////////////////
  7. class TT
  8. {
  9.    
  10.     friend int f(TT *);                    //                             И одновременно является прототипом функции.
  11.    
  12.     int n1;
  13.     int n2;
  14.    
  15.     int add(int  _n)
  16.     {
  17.        
  18.         return n1 + _n;
  19.     }
  20. };
  21.  
  22.  
  23.  
  24. int _f(TT *);  
  25.  
  26. ////////////////////////////////////////////
  27. int main()                                //
  28. {
  29.    
  30.     TT t;
  31.    
  32.    _f(&t);
  33.    
  34.     printf("add = %d\n", f(&t) );
  35. }
  36.  
  37.  
  38.  
  39. ////////////////////////////////////////////
  40. int _f(TT *pt)                            //
  41. {
  42.    
  43.      int *p = (int*)pt;
  44.      
  45.     *p =  12;
  46.      p++;
  47.     *p = 999;
  48. }
  49.  
  50.  
  51. //  Из дружественной функции:
  52. //  1) Инициализируем закрытое поле "n1"
  53. //  2) Вызываем закрытый метод   "add()"
  54. ////////////////////////////////////////////
  55. int f(TT *pt)                              //
  56. {
  57.    
  58.     printf("n1 = %d, n2 = %d\n", pt->n1, pt->n2);
  59.    
  60.     pt->n1 = 7;
  61.     return (*pt).add(1);
  62. }
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement