读书人

友元类如何使用?为什么会错

发布时间: 2012-03-19 22:03:05 作者: rapoo

友元类怎么使用?为什么会错?
#include <iostream>
using namespace std;
class AA
{
public:
friend class BB;
int num;
};

class BB
{
public:
static void show()
{
cout < <num; // 类 AA 中的成员
}
};

int main()
{
AA a={1};
BB::show();
return 0;
}

[解决办法]
假如你这样的语法合格的话,那么
int main()
{
AA a={1};
AA b={2};
BB::show(); // 你认为应该输出1,还是2?
return 0;
}
[解决办法]
cout < <num; // 类 AA 中的成员
你得有AA的具体的对象啊。
[解决办法]
cout < <num; // 类 AA 中的成员
AA对象在哪呀?
[解决办法]
class BB
{
public:
static void show()
{
AA aa;
cout < <aa.num; // 类 AA 中的成员
}
};

[解决办法]
类与对象不同
对象分配内存,程序使用
类定义,只是个类型描述
[解决办法]
#include <iostream>
using namespace std;

class AA
{
public:
friend class BB;
int num;
};

class BB
{
public:
static void show(AA & obj)
{
cout < < obj.num; // 类 AA 中的成员
}
};

int main()
{
AA a={1};
BB::show(a);
return 0;
}

读书人网 >C++

热点推荐