定义类X、Y、Z,函数h(X *),满足:

定义类X、Y、Z,函数h(X *),满足:类X有私有成员i,Y的成员函数g(X *)是X的友元函数,实现对X的成员i加1;类Z是类X的友元类,其成员函数f(X *)实现对X的成员i加5;函数h(X *)是X的友元函数,实现对X的成员i加10。在一个文件中定义和实现类,在另一个文件中实现main()函数。
博主在XYZ.h头文件中声明类与函数,在XYZ.cpp中定义和初始化,main.cpp中执行。
题目要求两个文件,则可以将类与函数的声明,定义和初始化放在一个.pp文件中,在主函数使用时调用。

XYZ.h

#pragma once
class X;//声明一个类X,因为Y要引用它,但这里还没有定义X
class Y
{
public:
	void g(X*p);
};
class X
{
public:
	X(int _a);
	friend void Y::g(X*p);
	friend void h(X*p);
	friend class Z;
	int getI() { return i; }
private:
	int i;
};
class Z
{
public:
	void f(X*p);
};
void h(X*p);

XYZ.cpp

 #pragma once
    #include "XYZ.h"
    X::X(int a)
    	:i(a)
    {
    }
    void Y::g(X*p)
    {
    	p->i += 1;
    
    }
    void h(X*p)
    {
    	p->i += 10;
    }
    
    
    void Z::f(X*p)
    {
    	 p->i+= 5;
    }

main.cpp

#include 
#include "XYZ.h"
using namespace std;
int main()
{
	X x(1);
	Y y;
	Z z;
	cout <

运行结果:
定义类X、Y、Z,函数h(X *),满足:_第1张图片

你可能感兴趣的:(定义类X、Y、Z,函数h(X *),满足:)