2-static详解

本文详细介绍了C++中`static`关键字的用法,包括修饰局部变量、函数以及类的成员。静态局部变量在程序运行期间只初始化一次,生命周期直至程序结束。静态函数限制其在源文件内可见,而静态成员变量实现了类级别的共享,只占用一份内存空间。静态成员函数无法访问非静态成员,但非静态成员函数可以调用静态成员函数。理解`static`的使用对于掌握C++类的封装性和资源共享至关重要。

参考文章
static可用于修饰变量与函数,控制存储方式与可见性

修饰对象

修饰局部变量

函数内部的局部变量,编译器分配于栈空间,函数执行结束时,将释放该局部变量,导致该局部变量的数值没法保存到下一次调用。
解决方案是,使用全局变量与static,全局变量改变了变量的可见性,static通过改变变量的存储方式(存储于全局区),延长局部变量的生命周期。
static 修饰的静态局部变量只执行初始化一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。

修饰函数

static所修饰的函数将限制该函数只能够在该源文件中使用。

修饰类的成员变量

在 C++ 类中,当需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见时,可将其定义为静态数据。

  1. 静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。
  2. 静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。
  3. 静态数据成员可以被初始化,但是只能在类体外进行初始化,若未对静态数据成员赋初值,则编译器会自动为其初始化为 0。
  4. 静态数据成员既可以通过对象名引用,也可以通过类名引用。
修饰类的成员方法

静态成员方法,可以直接通过类名调用静态成员方法。
不能通过类名来调用类的非静态成员函数。(使用双冒号::,静态方法)
类的对象可以使用静态成员函数和非静态成员函数。
类的静态成员函数中只能引用静态成员,不能引用非静态成员。
类的非静态成员函数可以调用用静态成员函数,但反之不能。
类的静态成员变量在使用前必须先初始化。

  1. 静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。
  2. 非静态成员函数有 this 指针,而静态成员函数没有 this 指针。
  3. 静态成员函数主要用来访问静态数据成员而不能访问非静态成员。
静态成员小结

静态资源是类初始化的时候加载的,而非静态资源是类实例化对象的时候加载的。 类的初始化早于类实例化对象,比如 Class.forName(“xxx”) 方法,就是初始化了一个类,但是并没有实例化对象,只是加载这个类的静态资源罢 了。所以对于静态资源来说,它是不可能知道一个类中有哪些非静态资源的;但是对于非静态资源来说就不一样了,由于它是实例化对象出来之后产生的,因此属于类的这些东西它都能认识。

### 回答1: "ip route-static" 是一个在 Cisco 路由器上使用的命令,用于配置静态路由。这个命令允许用户在路由器上手动添加路由条目,而不是让路由器自动学习路由。 语法:ip route [目的网络] [子网掩码] [下一跳地址/接口] [权重/跃点数] 参数说明: - [目的网络] 指定路由的目的网络 - [子网掩码] 指定该网络的子网掩码 - [下一跳地址/接口] 指定数据包经过的下一跳地址或接口 - [权重/跃点数] 指定路由的权重或跃点数 (可选) 示例: ip route 192.168.1.0 255.255.255.0 10.1.1.1 上面的命令添加了一条静态路由,将目的网络为192.168.1.0/24的数据包发往10.1.1.1(下一跳地址) ### 回答2: 在计算机网络中,路由器是一个用于转发数据包的网络设备。路由器根据一定的路由策略,将数据包从一个网络发送到另一个网络。在Linux操作系统中,我们可以使用ip route-static命令来配置静态路由。本篇文章将对该命令进行详细的介绍。 ip route-static命令的语法如下: ``` ip route-static [to DST_NETWORK] [via GATEWAY] [dev INTERFACE] [metric METRIC_VALUE] [table TABLE_ID] ``` 该命令包含以下选项: - to DST_NETWORK:要访问的目标网络地址。可以是IP地址、子网地址或网络地址。 - via GATEWAY:指定必须经过的网关地址,即下一跳地址。 - dev INTERFACE:指定数据包的出站网络接口,可以是物理接口或虚拟接口。 - metric METRIC_VALUE:设置路径的度量标准。 - table TABLE_ID:指定要路由的表的ID。默认情况下,路由将添加到主路由表中。 使用ip route-static命令添加静态路由的步骤如下: 1. 查看当前路由表:使用ip route命令或route -n命令可以查看当前的路由表。 2. 添加静态路由:使用ip route-static命令添加静态路由。例如: ``` ip route-static add 192.168.1.0/24 via 192.168.0.2 dev eth0 ``` 3. 验证静态路由是否已添加成功:使用ip route命令或route -n命令可以再次查看路由表,确认静态路由是否已添加成功。 静态路由的优缺点: 静态路由的优点是简单、快速、可靠。由于静态路由是手动配置的,因此可以根据需求对路由进行精细的控制。另外,静态路由不需要额外的计算机资源,所以在小型网络中使用较为适宜。 静态路由的缺点是不够灵活。当网络拓扑发生改变时,需要手动调整路由配置。静态路由也不能完全解决网络拓扑中的一些复杂问题,例如负载平衡和故障转移等,这需要动态路由协议的支持。 总结: 本文对Linux操作系统中的ip route-static命令进行了详细的介绍,并讲解了静态路由的优缺点。对于小型网络,使用静态路由可以快速、可靠地进行路由控制。但是,在大型网络中,使用动态路由协议更为恰当。我们需要根据实际情况的要求,选择合适的路由策略。 ### 回答3: 路由器作为网络的重要设备,承担着将数据包从源地址发送到目标地址的重要任务,而ip route-static命令是路由器中配置路由表的命令之一。 ip route-static命令的格式为ip route-static <目标网络> <子网掩码> <下一跳地址> [跃点数] [状态] 其中,目标网络指的是需要进行路由转发的目标网络,子网掩码则是用于区分网络地址和主机地址的编码,下一跳地址指的是该数据包需要发送到的下一个路由器或者直接到达目标网络的主机的地址。 ip route-static命令可以实现路由策略的配置,可以将不同的IP地址段,通过不同的下一跳地址,发送到不同的路由器或主机。通过设置不同的跃点数和状态,可以控制该路由的优先级和是否生效等参数。 此外,在实际应用中,还可以通过ip route-static命令实现流量均衡和负载均衡的功能,以实现路由的高可用性和数据包的快速传输。 总的来说,ip route-static命令是路由器配置路由表的一个重要命令,通过该命令的灵活使用,可以实现路由策略的优化和网络流量的控制,以确保网络的高效运行和稳定性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值