社区首页 >问答首页 >从标头中删除静态成员

从标头中删除静态成员
EN

Stack Overflow用户
提问于 2012-03-13 18:07:33
回答 1查看 64关注 0票数 0

类的静态成员变量和类的“主体”中定义的“自由”变量有什么区别?我的意思是,我可以用第二个代替第一个来释放类的头吗?

代码语言:javascript
代码运行次数:0
复制
// b.h
class B
{
public:
  B(int j);
  void print();
private:
  static int is;
};


//b.cpp
#include <iostream>

int i = 0;
int B::is = 0;

B::B(int j)
{
  i = j;
  is = j;
}

void B::print(){
  std::cout << i << " " << is << " " << std::endl;
}

//main.cpp
int main() {
  B b1(1);
  b1.print();
  B b2(2);
  b2.print();
  b1.print();
  return 0;
}

输出:

代码语言:javascript
代码运行次数:0
复制
1 1 
2 2 
2 2 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 18:12:21

在您的示例中,不同之处在于静态成员数据只能由类访问,因为它是在类的private部分中声明的,这在某些情况下可能是可取的。全局i可以由任何人更改。

因此,如果变量仅用于类,并且不应该被其他类使用,那么在private部分中使用静态成员数据是更好的解决方案。它为您提供了对变量的受限访问权限。全局变量通常是不好的,因为它让任何人都可以不受限制地访问。

请注意,在您的示例中,全局变量i具有外部链接。在其他文件中,可以简单地声明为extern int i,然后可以使用i并对其进行修改。

即使您将其设置为static全局变量,以使其具有内部链接,但与static成员数据相比,它也不是很好,因为静态成员数据给您提供了某种概念,即该变量仅由类使用,而不是由非类成员使用(如果在同一文件中有的话)。因此,与全局static数据相比,static成员数据提高了可读性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9689605

复制
相关文章
无请求不响应?
前几天我们学习了HttpServletResponse,今天就让我们了解一下HttpServletRequest。和HttpServletResponse一样,在service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大。
阿Q说代码
2021/05/13
1.2K0
无请求不响应?
Nslookup命令_nslookup命令反解ip
nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题
全栈程序员站长
2022/11/02
8200
windows nslookup命令详解_nslookup unknown
今天是特别傻逼,既然问了一个很愚蠢的问题,登录后台需要相关的ip,但是我只有域名,这么太突然来,我既然不知道用nslookup命令,好吧,先记录起来,希望下次不要犯这样的傻逼错误
全栈程序员站长
2022/11/02
1.1K0
windows nslookup命令详解_nslookup unknown
Linux 命令 | nslookup
它可以通过输入一个域名来获取相应的IP地址,并提供其他相关信息,如域名服务器、主机名等。
小林C语言
2023/09/02
4010
Linux 命令 | nslookup
RocketMQ-NameServer原理
在系统中肯定是做命名服务,服务治理方面的工作,功能应该是和zookeeper差不多 早期的版本中,使用的是 Zookeeper 做为配置中心,改名 RocketMQ 后使用了自己开发的 NameServer。 是一个几乎无状态的节点,可集群部署,节点之间无任何信息同步
潇洒
2023/10/20
3030
RocketMQ-NameServer原理
nslookup指定服务器是什么命令,nslookup命令详解_nslookup命令指定dns[通俗易懂]
nslookup命令作用是用于查询dns解析域名记录,一般我们使用都是通过此命令可以检测DNS是否正常或者有时候我们把域名A记录更改的ip址,通常更改A记录需要一定的时间才生效,我们可以通过此命令解析域名的A记录是否生效。
全栈程序员站长
2022/11/19
6.5K0
nslookup指定服务器是什么命令,nslookup命令详解_nslookup命令指定dns[通俗易懂]
NameServer模块划分
在进行NameServer的模块划分讨论前,先整理一下NameServer的功能:
林一
2018/07/24
4410
NameServer模块划分
深入剖析RocketMQ源码-NameServer
通过上图可以看到,RocketMQ的核心组件主要包括4个,分别是NameServer、Broker、Producer和Consumer,下面我们先依次简单说明下这四个核心组件:
冬夜先生
2021/10/12
5460
nslookup命令解析域名_nslookup是什么意思
非权威应答:Non-authoritative answer,除非实际存储DNS Server中获得域名解析回答的,都称为非权威应答。也就是从缓存中获取域名解析结果。
全栈程序员站长
2022/11/19
5.5K0
nslookup命令解析域名_nslookup是什么意思
nslookup命令的使用方法_nslookup测试命令
nslookup(name server lookup)是和dig类似的命令,都是用来查询域名信息的指令,但是在功能上没有dig强大,这个指令在Windows系统是自带的,要想在Linux中使用,就需要下载和dig相同的工具包
全栈程序员站长
2022/11/02
1.2K0
Linux DNS之nslookup命令
---- 概述 在我文章中有一篇专门讲解DNS如何工作的,今天我们采用linux下nslookup工具来查询DNS。nslookup全称是”query Internet name server interactively”,主要是是用来查询DNS。 使用 在使用nslookup之前,先确保已经安装了它。nslookup属于bind-utils包下一个命令,bind-utils软件包中很多DNS工具,比如:dig和nslookup等。通过如下命令来检查: [root@lv-centos ~]# rpm -q
吕海峰
2018/04/03
10.1K0
linux常用命令介绍-nslookup
nslookup(Name Server Lookup)是一种用于查询DNS(Domain Name System,域名系统)信息的命令行工具。它可以查询DNS服务器,获取域名对应的IP地址、反向解析、查询MX记录等信息。nslookup通常用于网络故障排查和网络配置调试。
玖叁叁
2023/04/11
2.3K0
DNS域传送漏洞(一)
DNS(Domain Name System,域名管理系统)是万维网WWW的重要基础。它建立在一个分布式数据库基础之上,在这个数据库里,保存了IP地址和域名的相互映射关系。
HACK学习
2019/08/07
1.9K0
js keypress 对输入中文不响应
动态添加js类对象的属性,需要[]来操作,js 不响应需要绑定 input 与 propertychange事件
Dylan Liu
2019/07/01
5.2K0
nslookup命令的使用方法_怎么退出nslookup命令
nslookup是一款查询DNS (Internet domain name server)的程序。用来网络管理工具,帮助诊断和解决DNS相关的问题。除此之外,也有其他DNS工具,如dig命令和host命令。
全栈程序员站长
2022/11/02
1.6K0
nslookup命令的使用方法_怎么退出nslookup命令
linux nslookup命令安装,在CentOS中安装nslookup命令
域名查询工具nslookup并不是Win系统的专利,Linux系统中也可以使用,不过要安装,默认没有。
全栈程序员站长
2022/11/02
5.8K0
RocketMQ NameServer深入剖析
本文将深入剖析rocketmq为什么选择自己开发NameServer,而不是选择类似于ZK这样的开源组件。同时对rocketmq的路由注册、路由发现、路由剔除进行剖析。并通过结合核心源码,对笔者的观点进行验证。同时对不同类型消息的重试机制,以及客户端选择nameserver的策略进行深入讲解。
田守枝
2019/11/24
4.5K0
采坑指南——域名解析问题排查过程
前几天,在ucloud上搭建的k8s集群(搭建教程后续会发出)。今天发现域名解析不了。
我的小碗汤
2019/07/30
4.6K2
RocketMQ-启动Nameserver
//ubuntu 下加 sudo 反而报错。最简单的命令: nohup sh mqnamesrv &
潇洒
2023/10/20
4050
每天学一个 Linux 命令(69):nslookup
nslookup(name server lookup)命令用于查询域名 DNS 信息的工具。nslookup 有两种工作模式,即“交互模式”和“非交互模式”。
民工哥
2021/03/30
8190
每天学一个 Linux 命令(69):nslookup

相似问题

regex交替选择错误匹配

23

regex:交替字符/顺序数字

32

regex模式选择交替匹配。

12

MySQL中的逻辑交替顺序

10

匹配交替字符的Regex表达式

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文