ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

ΪʲôҪʹÓõ½ÓÑÔªº¯Êý£¿(Ò»)
2017-10-13 10:50:33 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:4501´Î
Tags£ºÎªÊ²Ã´ Óõ½ º¯Êý

ʲô³¡¾°Ï»áÓõ½ÓÑÔªº¯Êý£¬ÓÑÔªº¯ÊýµÄ×÷ÓÃÊÇʲô£¬ÓÑÔªº¯ÊýºÍÆÕͨ³ÉÔ±º¯ÊýÓÖÓÐÔõÑùµÄÇø±ð£¿ÕⶼÊÇC++µ±ÖеÄһЩ»ù±¾¸ÅÄÕÆÎÕºÃÁËÎÞÂÛÊÇά»¤ÏîÄ¿»¹ÊÇ×öÏîÄ¿¿ª·¢¶¼´óÓÐñÔÒæ¡£±¾ÎÄÖ÷Ҫdz̸һÏÂC++ÖеÄÓÑÔªº¯Êý£¬ÈçÓв»×ã»òÕßÊè©֮´¦£¬·³Çë¶ÁÕßÅóÓѼ°Ê±Ö¸³ö£¬´ó¼ÒÒ»Æð¸Ä½ø¡£
Ò»¡¢¸ÅÊö
ÓÑÔªº¯ÊýÔÚʵÏÖÀàÖ®¼äÊý¾Ý¹²Ïíʱ£¬¿ÉÒÔ¼õÉÙϵͳ¿ªÏú£¬µ÷¸ßЧÂÊ¡£±ÈÈ磺ÀàAÖеĺ¯ÊýÐèÒª·ÃÎÊÀàBÖеijÉÔ±£¬ÄÇôÀàAÖиú¯ÊýÒªÊÇÀàBµÄÓÑÔªº¯Êý¡£
ÓÑÔªº¯ÊýÔÊÐíÍâÃæµÄÀà»òº¯ÊýÈ¥·ÃÎÊÀàµÄ˽ÓбäÁ¿ºÍ±£»¤±äÁ¿£¬´Ó¶øʹÁ½¸öÀ๲Ïíͬһº¯Êý¡£

¶þ¡¢Ê¹Óó¡¾°
ÆäʵһЩ²Ù×÷·ûµÄÖØÔØʵÏÖÒ²ÊÇÒªÔÚÀàÍâʵÏÖ£¬Í¨³£ÉùÃ÷ΪÀàµÄÓÑÔª¡£
½áºÏÉÏÃæËùÊö£¬Ò»°ãÔÚÒÔÏÂÁ½¸ö³¡¾°ÖлáÓõ½ÓÑÔªº¯Êý£º
1¡¢ÔËËã·ûÖØÔصÄijЩ³¡ºÏÐèҪʹÓÃÓÑÔªº¯Êý£»
2¡¢Á½¸öÀàÒª¹²ÏíÊý¾ÝµÄʱºò¡£

Èý¡¢ÓÅȱµã
1¡¢Óŵ㣺Äܹ»Ìá¸ßЧÂÊ£¬±í´ïÇåÎú¡¢¼òµ¥£»
2¡¢È±µã£ºÆÆ»µÁËÀàµÄ·â×°£¨¾¡Á¿²»ÒªÊ¹ÓóÉÔ±º¯Êý£¬³ý·Ç²»µÃÒѲÅʹÓÃÓÑÔªº¯Êý£©¡£

ËÄ¡¢Ê¹ÓÃ˵Ã÷
1¡¢ÓÑÔªº¯ÊýÊÇÀàÍ⺯Êý£¬ÉùÃ÷¿ÉÒÔ·ÅÔÚÀàµÄ˽ÓлòÕß¹«ÓУ¬ÇÒ¶¼Ã»ÓÐÇø±ð£»
2¡¢Ö±½Óµ÷ÓÃÓÑÔªº¯Êý²»ÐèҪͨ¹ý¶ÔÏó»òÕßÖ¸Õ룻
3¡¢ÓÑÔªº¯ÊýûÓÐthisÖ¸Õ룬ÇÒ²»Äܱ»¼Ì³Ð£»
4¡¢ÓÑÔªº¯ÊýÉùÃ÷ÐÎʽ friend + ÆÕͨº¯ÊýÉùÃ÷¡£

Îå¡¢¾ÙÀý˵Ã÷
1¡¢ÒÑÖªÁ½µã×ø±ê£¬ÇóÁ½µãÖ®¼äµÄ¾àÀë

#include 
  
   
#include 
   
     using namespace std; class Point { public: Point(double xx, double yy) { x = xx; y = yy; } void GetXY(); friend double Distance(Point &a, Point &b); protected: private: double x, y; }; void Point::GetXY() { cout << "(" << x << "," << y << ")" << endl; } double Distance(Point &a, Point &b) { double length; length = sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y)); //Ëü¿ÉÒÔÒýÓÃÀàÖеÄ˽ÓгÉÔ± return length; } void main(void) { Point p1(3.0, 4.0), p2(6.0, 8.0); p1.GetXY(); //³ÉÔ±º¯ÊýµÄµ÷Ó÷½·¨£¬Í¨¹ýʹÓöÔÏóÀ´µ÷Óà p2.GetXY(); double d = Distance(p1, p2); //ÓÑÔªº¯ÊýµÄµ÷Ó÷½·¨£¬Í¬ÆÕͨº¯ÊýµÄµ÷ÓÃÒ»Ñù£¬²»ÒªÏñ³ÉÔ±º¯ÊýÄÇÑùµ÷Óà cout << "distance=" << d << endl; return; }
   
  

ÔËÐнá¹û£º
ÕâÀïдͼƬÃèÊö

·ÖÎö£º
ÔڸóÌÐòÖеÄPointÀàÖÐ˵Ã÷ÁËÒ»¸öÓÑÔªº¯ÊýDistance()£¬ËüÔÚ˵Ã÷ʱǰ±ß¼Ófriend¹Ø¼ü×Ö£¬±êʶËü²»ÊdzÉÔ±º¯Êý£¬¶øÊÇÓÑÔªº¯Êý¡£ËüµÄ¶¨Òå·½·¨ÓëÆÕͨº¯Êý¶¨ÒåÒ»Ñù£¬¶ø²»Í¬ÓÚ³ÉÔ±º¯ÊýµÄ¶¨Ò壬ÒòΪËü²»ÐèÒªÖ¸³öËùÊôµÄÀà¡£µ«ÊÇ£¬Ëü¿ÉÒÔÒýÓÃÀàÖеÄ˽ÓгÉÔ±£¬º¯ÊýÌåÖеÄa.x£¬b.x£¬a.y£¬b.y¶¼ÊÇÀàµÄ˽ÓгÉÔ±£¬ËüÃÇÊÇͨ¹ý¶ÔÏóÒýÓõġ£ÔÚµ÷ÓÃÓÑÔªº¯Êýʱ£¬Ò²ÊÇͬÆÕͨº¯ÊýµÄµ÷ÓÃÒ»Ñù£¬²»ÒªÏñ³ÉÔ±º¯ÊýÄÇÑùµ÷Óᣱ¾ÀýÖУ¬p1.Getxy()ºÍp2.Getxy()ÕâÊdzÉÔ±º¯ÊýµÄµ÷Óã¬ÒªÓöÔÏóÀ´±íʾ¡£¶øDistance(p1, p2)ÊÇÓÑÔªº¯ÊýµÄµ÷Óã¬ËüÖ±½Óµ÷Ó㬲»ÐèÒª¶ÔÏó±íʾ£¬ËüµÄ²ÎÊýÊǶÔÏó¡£

2¡¢ÏÂÃæ¶ÔÉÏÃæÀý×ÓÊä³öÁ÷ÖØÔØ£¬ÊäÈëÊä³öÁ÷ÖØÔØÐèÒªÓõ½ÓÑÔªº¯Êý

#include 
  
   
#include 
   
     using namespace std; class Point { public: Point(double xx, double yy) { x = xx; y = yy; } void GetXY(); friend double Distance(Point &a, Point &b); friend ostream &operator <<(ostream &out, Point &b); protected: private: double x, y; }; ostream &operator <<(ostream &out, Point &b) { out << "(" << b.x << "," << b.y << ")" << endl; return out; } void Point::GetXY() { //cout<<"("<
    
     x<<","<
     
      y<<")"<
      
       ÔËÐнá¹û£º
       

3¡¢Í¨¹ýÓÑÔªº¯ÊýºÍÓÑÔªÀà´òÓ¡ÀàµÄ˽ÓгÉÔ± ·Ö±ð¶¨ÒåÒ»¸öÀàAºÍÀàB £¬¸÷ÓÐÒ»¸ö˽ÓÐÕûÊý³ÉÔ±±äÁ¿Í¨¹ý¹¹Ô캯Êý³õʼ»¯£¬ÀàAÓÐÒ»¸ö³ÉÔ±º¯ÊýShow(B &b)ÓÃÀ´´òÓ¡AºÍBµÄ˽ÓгÉÔ±±äÁ¿£¬·Ö±ðͨ¹ýÓÑÔªº¯ÊýºÍÓÑÔªÀàÀ´ÊµÏִ˹¦ÄÜ¡£

#include 
        
         
using namespace std;

class B
{
private:
    int tt;
    friend class A;
    friend void Show(A&, B&);
public:
    B(int tempB = 100) :tt(tempB) {}//default constructor
};

class A
{
private:
    int value;
    friend void Show(A&, B&);
public:
    A(int tempA = 200) :value(tempA) {}//default constructor
    void Show(B &b)
    {
        cout << "class A memeber function" << endl;
        cout << "class A private variable value:" << value << endl;
        cout << "class B private variable value:" << b.tt << endl;
        cout << endl;
    }
};

void Show(A& a, B& b)
{
    cout << "friend function" << endl;
    cout << "class A private variable value:" << a.value << endl;
    cout << "class B private variable value:" << b.tt << endl;
}

void main()
{
    A a;
    B b;
    a.
Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£º¶ÔSTM32F4 FPU½øÐмòµ¥ÉèÖà ÏÂһƪ£ºC++ÔËÐпâÔÚʹÓÃVC¹¹½¨ÏîÄ¿³£Óöµ½..

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿