当前位置: 首页 > news >正文

景区微网站 建设方案郑州做订货网站

景区微网站 建设方案,郑州做订货网站,自己做优惠券网站,备案空壳网站通知这里写目录标题 静态类成员友元友元方法 静态类成员 类成员一般都需要通过对象来访问#xff0c;不可以通过类名直接访问#xff0c;但是当我们将类成员定义为静态类成员#xff0c;则允许使用类名直接访问。 静态类成员是在类成员前定义static关键字。 1 #includeiost… 这里写目录标题 静态类成员友元友元方法 静态类成员 类成员一般都需要通过对象来访问不可以通过类名直接访问但是当我们将类成员定义为静态类成员则允许使用类名直接访问。 静态类成员是在类成员前定义static关键字。 1 #includeiostream2 using namespace std;3 class Cbook4 {5 public:6 static int price;7 };8 int Cbook::price 410;9 int main()10 {11 Cbook cbook;12 coutCbook inCbook::priceendl; //通过类名直接访问类成员13 coutCbook usecbook.priceendl;//通过对象访问静态类成员14 15 16 return 0;17 } 注意在定义静态类成员时通常需要在类体外部对静态类成员进行初始化。 静态类成员是被所有的类共享的无论定义多少个类对象。类的静态类成员只有一份同时如果一个对象修改了静态类成员那么其他对象的静态类成员也将改变修改的是同一个静态类成员 静态类成员可以是当前类的类型其他数据类成员只能是当前类的指针或应用类型在定义类成员时对于静态类成员其类型可以是当前类的类型而非静态类·成员则不可以除非数据成员的类型为当前类的指针或引用类型。 8 class CBOOK9 {10 public:11 static int price;12 // CBOOK cbook;错误非法定义13 static CBOOK cook;14 CBOOK *cbook;15 };静态类成员可以作为成员函数的默认参数在定义类的成员函数时可以为成员函数指定默认参数其参数的默认值也可以是类的静态类成员但是不同的数据成员不能作为成员函数的默认参数。 类的静态成员函数只能访问类的静态成员而不能访问普通的数据成员。 而且静态类成员函数不能定义为const成员函数如果函数的实现代码位于类体之外则在函数的实现部分不能再标识static关键字。 友元 友元概述 友元是使用friend关键字 让特定的函数或者别的类的所有成员函数对私有数据成员进行读写。 好处是可以保持数据的私有性又可以让特定的类或者函数直接访问私有成员。 为了提升效率友元可以让普通函数直接访问一个类的保护或私有数据成员但是如果没有友元机制就只能将类的数据成员声明为公共的从而任何函数都可以无约束地访问它。 友元函数 1 #includeiostream2 using namespace std;3 class Friendfunction4 { 5 public:6 Friendfunction()7 {8 m_height 0;9 m_width 0;10 }11 Friendfunction(int height,int width)12 {13 m_width width;14 m_height height;15 }16 int getHeight()17 {18 return m_height;19 }20 int getWidth()21 {22 return m_width;23 }24 friend int friendfunction(Friendfunction myret);25 protected:26 int m_height;27 int m_width;28 };29 int friendfunction(Friendfunction myret)30 {31 return myret.m_height*myret.m_width;32 }33 int main()34 {35 Friendfunction ff(120,210);36 coutresult friendfunction(ff)endl;37 38 return 0;39 } 在函数friendfunction中可以直接使用Friendfunction类对象中的数据成员就是因为第24行代码的作用 24 friend int friendfunction(Friendfunction myret);此例子既很好的保护隐藏了数据又可以使外界的特定函数直接访问这些隐藏数据。 接下来介绍友元类 就如下面第14行代码所示 friend class Clist; 就可以声明友元类啦。用法和功能与友元函数用法功能类似。这里就不再详细赘述了直接看代码 1 #includeiostream2 #includestring3 using namespace std;4 class Cltem5 {6 private:7 string m_name;8 void outputname()9 {10 coutname m_nameendl;11 12 }13 public:14 friend class Clist;15 void setltemname(string name)16 {17 m_name name;18 } 19 }; 20 class Clist21 {22 private:23 Cltem m_ltem;24 public:25 void outoutltem();26 };27 void Clist::outoutltem()28 {29 m_ltem.setltemname(beijing);30 m_ltem.outputname();31 }32 int main()33 {34 Clist list;35 list.outoutltem();36 37 return 0;38 } 定义Cltem类时使用了friend关键字将Clist类定义为Cltem类 的友元这样一来Clist类中的所有方法都可以访问Cltem类中的私有成员了。 友元方法 在我们真正开发程序时有时候需要控制一个类对当前类的私有成员的发法。比如我们需要实现只允许Cbook类中的某个成员来访问·Clibrary类的私有成员而不允许其他成员函数访问Clibrary类的私有数据这可以通过定义友元函数来实现。在定义Clibrary类的时候可以将Cbook类的某个方法定义为友元方法这样就限制了只有该方法允许访问Clibrary类的私有成员。 1 #includeiostream2 using namespace std;3 class Clibrary;4 class Cbook5 {6 public:7 Cbook();8 ~Cbook();9 Clibrary *position;10 void putcbook(); //声明友元11 //void notfriendcbook();//不声明友元作为对比12 };13 class Clibrary14 {15 friend void Cbook::putcbook();16 private:17 string name;18 void putname()19 {20 coutname nameendl;21 }22 public:23 void setname(string name);24 };25 void Clibrary::setname(string name) 26 { 27 this-name name;28 }29 void Cbook::putcbook()30 { 31 position-setname(beijing);32 position-putname();33 } /*34 void Cbook::notfriendcbook()35 {36 position-setname(beijing);37 position-putname();38 }*/39 Cbook::Cbook()40 {41 position new Clibrary();42 }43 Cbook::~Cbook()44 {45 delete position;46 position NULL;47 }48 49 int main()50 {51 Cbook cook;52 cook.putcbook();53 54 // cook.notfriendcbook();55 return 0;56 } 就像上面代码所示如果把没有声明友元的成员函数放开就会出现下面这样的错误。 [bsklocalhost c]$ g friendmethod.cpp friendmethod.cpp: In member function ‘void Cbook::notfriendcbook()’: friendmethod.cpp:18:10: error: ‘void Clibrary::putname()’ is privatevoid putname()^ friendmethod.cpp:37:23: error: within this contextposition-putname();原因也很简单就是因为notfriendcbook()成员函数不是Clibrary类的友元所以这个成员函数就不能访问去访问Clibrary类中的私有属性。 此外全局函数也可以作为类友元一样可以访问类中的私有成员。 最后简单来谈一下 友元函数在访问类对象中的成员时不需要通过对象名。友元函数没有this指针如果不通过对象名就无法找到类对象中的非static成员也就无法访问。但是当访问类对象中的static成员时就可以不用通过对象名访问。
http://www.w-s-a.com/news/134634/

相关文章:

  • 四核网站建设设计网站流程
  • ui设计网站设计与网页制作视频教程wordpress插件漏洞利用
  • 网站建设公司排名前十做网站的最终目的
  • 选择网站开发公司的标准中国网站建设市场规模
  • 衣服网站建设策划书广州住房和城乡建设部网站
  • 微商城科技淄博网站建设优化seo
  • 杭州 网站设计制作东圃手机网站开发
  • 网站文章页内链结构不好可以改吗微信平台如何开发
  • 炫酷业务网站课程网站如何建设方案
  • 网站建设服务器可以租吗wordpress微信打赏
  • 网站制作的重要流程图大连网站优化快速排名
  • 河南省住房建设厅官方网站注册公司邮箱需要什么
  • 美橙网站注册华为手机网站建设策划方案论文
  • 河南省和建设厅网站首页在线图片翻译
  • 关于备案空壳网站清理通知去别人网站挂黑链
  • 做网站待遇世界购物平台排行榜
  • 售后服务网站什么网站免费做简历模板
  • 网站模板怎么修改成都网站优化seo
  • 给装修公司做推广的网站wordpress站点的根目录
  • 怎么创建企业网站wordpress怎么做404页面跳转
  • 福建省住房和建设厅网站网站做著作权
  • 编程代码网站网站搭建的注意事项
  • 音乐网站排名公司如何做自己的网站
  • 网站设计模式三网合一网站源代码
  • 珠海市品牌网站建设哪家好宛城区网站制作
  • 网站维护工程师代写文章兼职
  • 贵州城乡和建设厅网站企业网站备案名称窍门
  • .cc后缀网站湛江霞山
  • 青岛制作网站软件ui设计培训哪里好
  • 网站建设的构思环保公司宣传册设计样本