载入中。。。 'S bLog
 
载入中。。。
 
载入中。。。
载入中。。。
载入中。。。
载入中。。。
载入中。。。
 
填写您的邮件地址,订阅我们的精彩内容:


 
VC++学习笔记6-类的友员函数和静态函数
[ 2010/7/8 22:36:00 | By: 梦翔儿 ]
 

//设置友元及示例

//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;
}

 
 
  • 标签:友元 静态 
  • 发表评论:
    载入中。。。

     
     
     

    梦翔儿网站 梦飞翔的地方 http://www.dreamflier.net
    中华人民共和国信息产业部TCP/IP系统 备案序号:辽ICP备09000550号

    Powered by Oblog.