Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Дружественные функции


Автор: boobie 22.7.2012, 09:46
Почему так работает:
Код

#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
class c2;//неполное объявление
class c1
{
    int x;
public:
    void init()
    {
        x=12;
    }
    int kvad(c2 b);
};
class c2
{
    int x;
public:
    void init()
    {
        x=10;
    }
    friend int c1::kvad(c2 b);
};
int c1::kvad(c2 b)
{
    int ttt=x-b.x;
    return ttt;
}
int main()
{
    c1 v1;
    v1.init();
    c2 v2;
    v2.init();
    cout<<v1.kvad(v2)<<"\n";
    system("pause");
}

А так - нет:
Код

#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
class c2;//неполное объявление
class c1
{
    int x;
public:
    void init()
    {
        x=12;
    }
    int kvad(c2 b)
    {
        int ttt=x-b.x;
        return ttt;
    }
};
class c2
{
    int x;
public:
    void init()
    {
        x=10;
    }
    friend int c1::kvad(c2 b);
};


int main()
{
    c1 v1;
    v1.init();
    c2 v2;
    v2.init();
    cout<<v1.kvad(v2)<<"\n";
    system("pause");
}

Visual C++  2010

Автор: mes 22.7.2012, 12:54
boobie, потому, что на тот момент ни о дружбе, ни о строение класса  еще ничего не известно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)