//设置友元及示例
//car.h文件内容
//类的声明 定义和实现
//car.h头文件,用来声明并定义类
#ifndef CAR_H_ //防止被重复引用头文件
#define CAR_H_
#i nclude <string>
using namespace std;
struct color
{
unsigned char red;
unsigned char blue;
unsigned char green;
};
//利用构造函数的匹配功能,可以加入更多的一些新的特性
class car
{
public:
car() //注意没有void,和类同名
{
//内存清零,设置颜色为(0,0,0)
memset(&clr,0,sizeof(color));
//设置颜色为(255,0,0) 红色
clr.red=255;
}
//通过一个颜色来创建一个车对象
car(color _clr)
{
clr=_clr;
}
//通过三元色来创建
car(unsigned char r,unsigned char g,unsigned char b)
{
clr.red=r;
clr.blue=b;
clr.green=g;
}
private:
char id[32+1];
string name;
color clr;
public:
void print();
void getColor(color& ref_clr);
void setColor(color _clr);
friend void set_id_info(car* ptr); //设置成员函数为友元
friend class car_friend;//设置友元类
};
void set_id_info(car* ptr)
{
if (ptr)
{
strcpy(ptr->id,"1234567890");
}
}
class car_friend
{
public:
void get_id_info(car* ptr)
{
if (ptr)
{
cout<<ptr->id<<endl;
}
}
};
#endif /*CAR_H_*/
=======
//play.cpp内容
#i nclude <iostream>
#i nclude <string>
#i nclude "car.h"
using namespace std;
int main()
{
car c;
set_id_info(&c);
car_friend cf;
cf.get_id_info(&c);
return 0;
}
==========
//静态成员
class test
{
public:
test(){}
~test(){}
public:
//静态函数
static int getCount()
{
return m_nCount;
}
private:
//静态函数
static int m_nCount;
};
int test::m_nCount=0;
//静态函数属于整个类,天生存在
//静态函数要初始化如最后一句.
//类的任何成员函数都可以访问静态成员数据
=====================
//利用静态成员加入产量计数器
//类的声明 定义和实现
//car.h头文件,用来声明并定义类
#ifndef CAR_H_ //防止被重复引用头文件
#define CAR_H_
#i nclude <string>
using namespace std;
struct color
{
unsigned char red;
unsigned char blue;
unsigned char green;
};
class car_friend;
//利用构造函数的匹配功能,可以加入更多的一些新的特性
class car
{
public:
car() //注意没有void,和类同名
{
//内存清零,设置颜色为(0,0,0)
memset(&clr,0,sizeof(color));
//设置颜色为(255,0,0) 红色
clr.red=255;
m_nCarTotal++; //产量加1
}
//通过一个颜色来创建一个车对象
car(color _clr)
{
clr=_clr;
m_nCarTotal++;
}
//通过三元色来创建
car(unsigned char r,unsigned char g,unsigned char b)
{
clr.red=r;
clr.blue=b;
clr.green=g;
m_nCarTotal++;
}
private:
char id[32+1];
string name;
color clr;
public:
void print();
void getColor(color& ref_clr);
void setColor(color _clr);
//获得产量
static long getCarCount()
{
return m_nCarTotal;
}
friend void set_id_info(car* ptr); //设置成员函数为友元
friend class car_friend;//设置友元类
private:
static long m_nCarTotal;
};
void set_id_info(car* ptr)
{
if (ptr)
{
strcpy(ptr->id,"1234567890");
}
}
class car_friend
{
public:
void get_id_info(car* ptr)
{
if (ptr)
{
cout<<ptr->id<<endl;
}
}
};
#endif /*CAR_H_*/
------
//main.cpp 运行看结果
#i nclude <iostream>
#i nclude <string>
#i nclude "car.h"
using namespace std;
//初使化产量计数为0
long car::m_nCarTotal=0;
int main()
{
cout<<car::getCarCount()<<endl;
car a;
cout<<car::getCarCount()<<endl;
car* pCar=new car(128,0,234);
cout<<car::getCarCount()<<endl;
delete pCar;
car b[12];
cout<<car::getCarCount()<<endl;
car *ptr=new car[10];
cout<<car::getCarCount()<<endl;
delete [] ptr;
return 0;
}