类模板static成员的使用

转载:http://blog.csdn.net/ljq32/article/details/7911390

1. 与普通类的static成员一样,类内部声明一次,类外部定义一次,定义时可以设置也可以不设置初始值;

2. 类模板内部声明与普通类的static成员一致:

[html] view plaincopy
print?
  1. //16.4.7.h  
  2. template <class T>  
  3. class Foo  
  4. {  
  5. public:  
  6.   static int count() { return cnt; }  
  7.   
  8. private:  
  9.   static int cnt; //类模板内部声明静态变量cnt  
  10.                   //也必须在类模板外部定义一次cnt,否则编译错误:"undefined reference to `Foo<int>::cnt'";  
  11. };  
3. 类模板外部定义一次,通常在类模板定义文件中,定义时不带关键字static,必须以模板形参表与模板名字进行限定,以指出它是类模板的成员;

[html] view plaincopy
print?
  1. //16.4.7.cpp  
  2. #include <iostream>  
  3. #include "16.4.7.h"  
  4. using namespace std;  
  5.   
  6. //类模板定义文件定义cnt并给定初始值,当未明确指定初始值时,默认值为相应数据类型的默认值,int类型为0;  
  7. template <class T> int Foo<T>::cnt = -1;  
  8.   
  9. int main()  
  10. {  
  11.   //static成员cnt的不同使用方式  
  12.   Foo<int> f;  
  13.   Foo<int> *pf = &f;  
  14.   Foo<int> &rf = f;  
  15.   cout << "f.count():" << f.count() << endl;  
  16.   cout << "rf.count():" << rf.count() << endl;  
  17.   cout << "pf->count():" << pf->count() << endl;  
  18.   cout << "Foo<int>::count():" << Foo<int>::count() << endl;  
  19.   
  20.   return 0;  
  21. }  
  22.   
  23. 运行结果:  
  24. f.count():-1  
  25. rf.count():-1  
  26. pf->count():-1  
  27. Foo<int>::count():-1  
  28.    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络编程服务器模型选择之循环服务器

转载&#xff1a;http://www.cnblogs.com/lizhenghn/p/3617608.html 在网络程序里面&#xff0c;通常都是一个服务器处理多个客户机&#xff0c;为了出个多个客户机的请求&#xff0c;服务器端的程序有不同的处理方式。本节开始介绍Linux下套接字编程的服务器模型选择&#xff…

剑指Offer04. 二维数组中的查找

在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 相当于二叉搜索树,左孩子比根节点小&…

Linux网络编程服务器模型选择之并发服务器(上)

转载&#xff1a;http://www.cnblogs.com/lizhenghn/p/3617666.html 与循环服务器的串行处理不同&#xff0c;并发服务器对服务请求并发处理。循环服务器只能够一个一个的处理客户端的请求&#xff0c;显然效率很低。并发服务器通过建立多个子进程来实现对请求的并发处理。并发…

剑指Offer10- II. 青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97&#xff08;1000000007&#xff09;&#xff0c;如计算初始结果为&#xff1a;1000000008&#xff0c;请返回 1。 示例 1&#xff1a; 输入&a…

Linux网络编程服务器模型选择之并发服务器(下)

转载&#xff1a;http://www.cnblogs.com/lizhenghn/p/3618986.html 前面两篇文章&#xff08;参见&#xff09;分别介绍了循环服务器和简单的并发服务器网络模型&#xff0c;我们已经知道循环服务器模型效率较低&#xff0c;同一时刻只能为一个客户端提供服务&#xff0c;而且…

剑指Offer05. 替换空格

请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 示例 1&#xff1a; 输入&#xff1a;s “We are happy.” 输出&#xff1a;“We%20are%20happy.” class Solution { public:string replaceSpace(string s) {int count0;int lens.size();stri…

Linux网络编程服务器模型选择之IO复用循环并发服务器

转载&#xff1a;http://www.cnblogs.com/lizhenghn/p/3619091.html 在前面我们介绍了循环服务器&#xff0c;并发服务器模型。简单的循环服务器每次只能处理一个请求&#xff0c;即处理的请求是串行的&#xff0c;效率过低&#xff1b;并发服务器可以通过创建多个进程或者是线…

数据结构(六)二叉树的遍历(递归非递归方法)

数据结构&#xff08;六&#xff09;二叉树的遍历&#xff08;递归非递归方法&#xff09; 一、递归方法 1.先序遍历 void PreOrder(BiTree T) {visit(T);PreOrder(T->LChild)PreOrder(T->RChild) }2.先序遍历 void PreOrder(BiTree T) {PreOrder(T->LChild)visit…

memcpy/memset函数的c语言实现

转载&#xff1a;http://blog.csdn.net/u011118276/article/details/46742341 1、memcpy 头文件&#xff1a;#include <string.h> 函数原型&#xff1a;void *memcpy(void *dest, const void *src, size_t n) 功能&#xff1a;将指针src指向的内存空间的n个字节复制到des…

计算机网络(一)计算机网络体系

计算机网络&#xff08;一&#xff09;计算机网络体系一、计算机网络概述概念功能组成分类二、体系结构和参考模型ISO/OSI模型物理层网络层传输层会话层表示层应用层OSI参考模型与TCP/IP参考模型OSI参考模型与TCP/IP参考模型不同5层参考模型一、计算机网络概述 概念 计算机网…

计算机网络(二)物理层

计算机网络&#xff08;二&#xff09;物理层一、通信基础物理层接口特性1.机械特性2.电气特性3.功能特性4.规程特性典型的数据通信模型三种通信方式1.单工通信2.半双工通信/双向交替通信3.全双工通信/双向同时通信数据传输方式串行传输并行传输同步传输异步传输二、数据交换方…

计算机网络(三)数据链路层

计算机网络&#xff08;三&#xff09;数据链路层1.基本概念2.功能概述3.组帧字符计数法字符填充法零比特填充法违规编码法4.差错控制检错编码奇偶校验码CRC循环冗余码纠错编码海明码流量控制停止等待协议滑动窗口协议后退N帧协议&#xff08;GBN&#xff09;选择重传协议5.介质…

libevent网络编程例子(1)

转载&#xff1a;http://blog.csdn.net/huangyimo/article/details/46806193 这篇文章介绍下libevent在socket异步编程中的应用。在一些对性能要求较高的网络应用程序中&#xff0c;为了防止程序阻塞在socket I/O操作上造成程序性能的下降&#xff0c;需要使用异步编程&#xf…

计算机网络(四)网络层

计算机网络&#xff08;四&#xff09;网络层一、概述和功能TCP/IP协议栈IP数据报格式IP数据报分片二、ipv4网络地址转换&#xff08;NAT&#xff09;子网划分子网掩码ARP协议&#xff08;地址解析协议&#xff09;DHCP协议ICMP协议二、ipv6ipv4和ipv6的区别IPv6基本地址类型IP…

Linux下基于socket和多线程的聊天室小程序

转载&#xff1a;http://blog.csdn.net/robot__man/article/details/52460733 要求&#xff1a;基于TCP编写&#xff0c;一个聊天室最多100人。 客户端&#xff1a;   1、用户需要登录&#xff0c;登录时只需要输入一个昵称即可无需判断昵称是否重复&#xff08;如果其他功…

操作系统(一)计算机系统概述

操作系统&#xff08;一&#xff09;计算机系统概述一、操作系统的概念二、功能和目标资源的管理者向上层提供服务对硬件的扩展三、操作系统的特征并发共享虚拟异步四、操作系统的发展与分类手工操作阶段批处理阶段单道批处理系统多道批处理系统分时操作系统实时操作系统操作系…

Linux下使用socket传输文件的C语言简单实现

转载&#xff1a;http://blog.csdn.net/ljd_1986413/article/details/7940938 服务器程序和客户端程序应当分别运行在两台计算机上。 在运行服务器端的计算机终端执行&#xff1a;./file_server 在运行客户端的计算终端上执行&#xff1a;./file_client ipaddr_server 然后根…

操作系统(二)进程管理

ui 操作系统&#xff08;二&#xff09;进程管理一、进程程序和进程进程控制块&#xff08;PCB&#xff09;进程的组成进程的特征进程的状态与转换进程状态的转换进程的组织链接方式索引方式进程的控制进程的创建进程的终止进程阻塞进程唤醒进程切换进程通信共享存储消息传递管…

gethostbyname()函数说明

转载&#xff1a;http://www.cnblogs.com/cxz2009/archive/2010/11/19/1881611.html gethostbyname()函数说明——用域名或主机名获取IP地址 包含头文件 #include <netdb.h> #include <sys/socket.h> 函数原型 struct hostent *gethostbyna…

操作系统(三)内存管理

操作系统&#xff08;三&#xff09;内存管理一、程序执行过程装入的三种方式链接的三种方式二、内存管理的概念内存空间的分配与回收连续分配管理方式单一连续分配固定分区分配动态分区分配首次适应算法最佳适应算法最坏适应算法邻近适应算法非连续分配管理方式基本分页存储管…