81-85.c++个人练习。

1.

class Cat {
public:
	Cat(int age) :
		itsAge(age) {
		numOfCats++;
	}
	virtual ~Cat() {
		numOfCats--;
	}
	virtual int getAge() {
		return itsAge;
	}
	virtual void setAge(int age) {
		itsAge = age;
	}
	static int getNumOfCats() {
		return numOfCats;
	}
private:
	int itsAge;
	static int numOfCats;
};

int Cat::numOfCats = 0;

void telepathicFunction();

int main() {
	const int maxCats = 5;
	Cat *catHouse[maxCats];
	int i;
	for (i = 0; i < maxCats; i++) {
		catHouse[i] = new Cat(i);
		telepathicFunction();
	}

	for (i = 0; i < maxCats; i++) {
		delete catHouse[i];
		telepathicFunction();
	}
	return 0;
}

void telepathicFunction() {
	cout << "There are " << Cat::getNumOfCats() << " cats alive!\n";
}

2.

#include "my_x_y_z.h"
int main() 
{
	X x;
	Z z;
	z.f(&x);
	return 0;
}

#ifndef  MY_X_Y_Z_H

class X; 
class Y {
public:
	void g(X*);
};

class X 
{ 
private:
	int i;
public:
	X(){i=0;}
	friend void h(X*);
	friend void Y::g(X*);
	friend class Z;
};

void h(X* x) { x->i =+10; }

void Y::g(X* x) { x->i ++; }

class Z {
public:
	void f(X* x) { x->i += 5; }
};

#endif		//  MY_X_Y_Z_H


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值