静态static:静态数据和静态函数,在内存中只有一份,不会随着创建对象的数目的增加而增加
static数据:比如银行的account类中,账户名是普通数据,100个对象会有100个账户名,但利率都是相同的,因此利率可以设置为static
static函数:static函数和其他一般成员函数相比,static函数没有this指针,因此它不能处理类中的一般数据,只能处理static数据

static数据,需要在类外面进行定义。
调用static函数的两种方式:(1)通过object调用(2)通过class name调用

class Account {public:
static double m_rate;//声明
static void set_rate(const double& x) { m_rate = x; }
};
double Account::m_rate = 8.0;//定义
int main() {Account::set_rate(5.0); //通过class name调用
Account a;
a.set_rate(7.0); //通过object调用
}

单例模式的例子:

class A {public:
static A& getInstance();
setup() { ... }
private:
A();
A(const A& rhs);
...
};
A& A::getInstance()
{static A a;
return a;
}

类模板:template<typename T>

函数模板:template<class T>

c++面向对象高级编程 学习四 静态、类模板、函数模板相关推荐

  1. c++面向对象高级编程 学习十一 类模板、函数模板、成员模板

    namespace经验谈: 团队中函数或类的名字可能会冲突,因此使用namespace进行区分. 类模板: template<typename T> 函数模板: template<c ...

  2. c++面向对象高级编程 学习十四 引用

    文章目录 reference reference的常见用途 reference 变量有三种形式:值,指针,引用 int x=0; //值 int* p=&x;//指向整型的指针,地址,指针在之 ...

  3. c++面向对象高级编程 学习二 带指针的类

    带指针的类,必须要自己写拷贝构造和赋值构造 拷贝构造:参数和类的类型一样的构造函数 赋值构造:重写操作符=,且其参数和类的类型一样 class String {public: String(const ...

  4. c++面向对象高级编程 学习一 不带指针的类

    复数类 complex 是一个不带指针的类,其声明如下: class complex {public: complex(double r=0,double i=0):re(r),im(i){} com ...

  5. c++面向对象高级编程 学习十六 vptr和vtbl

    当一个类中有一个或多个虚函数时,内存中会多一个虚指针(vptr,virtual pointer),指向一个虚表(vtbl,virtual table) 父类有虚函数,则子类一定有虚函数 在下图示意图中 ...

  6. c++面向对象高级编程 学习十 function-like classes

    本节是设计一个class,使它的行为像一个函数. 如果一个东西能接受小括号()操作符,那么这个东西就称之为函数,或像函数的东西. 下图为三个函数对()的重载,这三个类均为像函数的类,它们可接受()操作 ...

  7. c++面向对象高级编程 学习七 转换函数

    转换函数:对象A和对象B之间的互相转换. class Fraction {public:Fraction(int num,int den=1):m_numerator(num),m_denominat ...

  8. c++面向对象高级编程 学习六 虚函数

    虚函数:在成员函数前面加上virtual,函数就变成了虚函数 继承函数:子类可以调用父类的函数,叫做继承了函数,即函数的调用权 三种函数: non-virtual 函数: 你不希望 derived c ...

  9. c++面向对象高级编程 学习五 组合、委托与继承

    组合 composition 表示has a queue类中有一个deque容器,这种关系叫做 组合 queue中的六个函数都是调用c的函数完成的 template <class T> c ...

最新文章

  1. 【集合论】容斥原理 ( 复杂示例 )
  2. 【ESP8266】ESP8266_NONOS_SDK开发包生成的镜像文件构建步骤分析
  3. 使用StringRedisTemplate和RedisTemplate
  4. type c pin定义_在C中定义宏以设置和清除PIN的位
  5. webpack打包VUE项目读取外部配置文件,灵活配置域名
  6. HTML5 Web Applications
  7. HTTP中GET与POST的区别,99 %的人都理解错了
  8. paip.备份导出ANDROID安卓自带记事本内容
  9. 【机器学习系列】HMM第四讲:从状态空间模型再回看HMM模型
  10. java环境变量配置不成功,已经解决
  11. Xposed 框架检测机制
  12. uniapp开发小程序-获取支付宝小程序用户手机号功能
  13. excel表格分割线一分为二_高效秘技!用EXCEL制作导航页和日志表管理日常工作...
  14. 无U盘安装系统(到固态硬盘)教程
  15. HelloWorld是如何在计算机里跑起来的?
  16. MySQL数据库中插入图片
  17. MySQL数据库命令(第二节)
  18. 光学定位与追踪技术_光学追踪技术
  19. mapper同时添加数据只能添加一条_Mybatis第二章——多表同时插入和级联查询
  20. 工业软件发展峰会-雪山论剑 -

热门文章

  1. 【转】VTK + QT + VS 编译安装配置
  2. 【转】刨根究底正则表达式(1):开篇
  3. SharePoint无代码工作流设计开发实例——交通费报销流程(三)
  4. sharepoint的文件是怎样存放的及存放的表是哪个
  5. python手动回收内存哪家好_谈谈如何手动释放Python的内存
  6. php 父类中获取子类的名称,php – 在父类中获取子类的名称(静态上下文)
  7. python中if嵌套语句的作用_讲解Python中if语句的嵌套用法
  8. usb接口供电不足_AMD RX 6000 系列显卡配备USB-C 接口,支持外接供电
  9. ajax jsp模糊查询源码,Ajax动态执行模糊查询功能
  10. 【POJ - 2752】Seek the Name, Seek the Fame (KMP,公共前缀后缀长度及个数)