静态数据成员:在类里面声明为static静态数据成员,但是要在类外面定义和初始化静态数据成员。因为这个静态数据成员是属于类的,我们想要在所以的对象定义之前就初始化这个静态数据成员。

静态函数:也是在类里面在函数名前面添加static,在静态函数中不能访问非静态变量。所以静态函数中只能访问静态数据成员。静态函数调用的方法可以是Person::getcount()或者per::getcount()(在Person per;的前提下)

#include <iostream>using namespace std;class Person
{
private:char *name;int age;char *work;static int cnt;public:static int getcount(void);Person(){name = NULL;work = NULL;cnt++;}~Person(){cout<<"~Person"<<endl;}
};int Person::cnt = 0;int Person::getcount(void)
{return cnt;
}int main(void)
{Person *per = new Person[50];cout<<getcount()<<endl;return 0;
}

打印结果:50,实例化了50个对象,因为没有利用delete释放per指针所以这些对象被销毁之前不会调用析构函数。

在c++中经常使用引用来传参数

友员函数:可以访问对象成员为private的函数

#include <iostream>using namespace std;class Point
{
private:int x;int y;public:Point() {}Point(int x, int y) : x(x), y(y) {}int getX(void){ return x; }int getY(void){ return y; }void setX(int x){ this->x = x; }void setY(int y){ this->y = y; }friend Point add(Point &p1, Point &p2);void printInfo(void){cout<<"("<<x<<", "<<y<<")"<<endl;}
};Point add(Point &p1, Point &p2)
{Point n;n.x = p1.x + p2.x;n.y = p1.y + p2.y;return n;
}int main(void)
{Point p1(1, 2);Point p2(2, 3);Point sum = add(p1, p2);sum.printInfo();
}

c++学习六(静态成员和友员函数)相关推荐

  1. 1.6 C++基础知识_静态成员_友员

    静态成员 问:假设在main函数中创建了许多个Person类对象,要怎么在代码中统计一共创建了多少个Person类对象呢? 答:可以使用静态成员,在Person类中创建一个静态成员cnt,在构造函数中 ...

  2. 类各种成员的访问权限 及 友员类和友员函数

    #ifndef _TEST_H #define _TEST_H #include <iostream> using namespace std; /******************** ...

  3. python设计一个学生类姓名年龄成绩_C# 编写学生类Student,包含学生姓名,成绩,设计一个友员函数sortDegree(),将学生成绩按大到小排序。...

    满意答案 kdoey 2014.04.11 采纳率:56%    等级:9 已帮助:212人 12345678910111213141516171819202122232425262728293031 ...

  4. 实验名称: 类的构造函数、析构函数和友员成员应用

    实验四 (实验课时:2  实验性质:设计) 实验名称:  类的构造函数.析构函数和友员成员应用 实验目的: (1)练习类的构造函数.析构函数的定义和使用方法: (2)练习对象数组.对象指针的使用: ( ...

  5. C语言程序设计入门学习六步曲,六步带你入门C语言

    C语言是面向过程的,而C++是面向对象的 C和C++的区别:         C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理 ...

  6. 写了六个相同功能的函数之后,我学到了什么

    本文讲的是写了六个相同功能的函数之后,我学到了什么, 几周之前,一个社区在 Free Code Camp's Forum 上发起了非官方的算法大赛. 这个题目看似很简单:返回小于数字 N 的所有 3 ...

  7. 艾伟:C#多线程学习(六) 互斥对象

    本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习( ...

  8. C#多线程学习(六) 互斥对象

    C#多线程学习(六) 互斥对象 原文链接:http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个 ...

  9. F#学习之路(2) 深刻理解函数(上)

    函数在函数式编程语言中是一等公民,是函数式语言中最重要的基本组成元素,也是其名称的由来. F# 中的函数之如C#中的类,是组织程序结构的最基本单元.是命令式编程语言中函数或OO编程语言中方法的超集.超 ...

最新文章

  1. 西湖大学鞠峰组招聘“污水处理”与“微生物组”方向博士后与科研助理
  2. html 二叉树模式,重建二叉树.html
  3. 显示内容长时,显示部分内容,鼠标移入显示全部内容
  4. Linux新手入门:Unable to locate package错误解决办法
  5. jsoup爬虫教程技巧_Jsoup V的幕后秘密:优化的技巧和窍门
  6. apache mahout_使用Apache Mahout创建在线推荐系统
  7. HttpWebRequest类
  8. 行,Python终于跌神坛了!程序员:活该!你敢来评论吗...
  9. 为了探究不同光照处理_昭通2020名师助考? 丨掌握控制变量法轻松搞定中考物理实验探究题...
  10. font: 12px/1.5 Tahoma, Helvetica, Arial, sans-serif;
  11. [NOI 2014]起床困难综合症
  12. python编程助手_用Python做一个久坐提醒小助手的示例代码
  13. css div背景图大小,divcss如何改变背景图片大小
  14. 关于win10专业版无法下载暴雪战网的解决方案
  15. 什么是PaaS?平台即服务介绍
  16. 中国IT工作者35岁后的发展出路调查报告
  17. java io 设备未就绪,GRADLE遇见“设备未就绪”
  18. XDS100 V2仿真器驱动及安装指导
  19. 学计算机的新手用什么笔记本好一点,笔记本什么配置比较好 有什么推荐呢
  20. 1000个手工绘制污渍笔刷

热门文章

  1. 联通预存话费送iphone
  2. 大众点评网的网站架构
  3. 什么是分布式_什么是分布式存储?分布式云存储有什么优势?
  4. “4K”标准/技术一网打尽
  5. 要来一把紧张刺激的互联网狼人杀吗?
  6. 互联网公司的中年人都去哪了?
  7. Python第三章总结
  8. vue 使用fs_node.js 中的 fs 模块的使用
  9. 收钱吧-轻POS接口
  10. 挺着肚皮的小淘气 蒙语版铃声 挺着肚皮的小淘气 蒙语版手机铃...