`
ouyida3
  • 浏览: 49897 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于c++的static关键字

阅读更多
C++中的static关键字

讲static前先出一道题.

系统代码中有这么一段:

IWriteOff.h文件
class IWriteOff
{
public:
...
protected:
static AcctmanmParam  m_AcctmanmParam;
...
}

IWriteOff.cpp文件
AcctmanmParam IWriteOff::m_AcctmanmParam;

IWriteOffMgr.h文件
class IWriteOffMgr
{
public:
...
protected:
IWriteOff   * m_WriteOffPtr;
...
}

SlWriteOffMgr.cpp
typedef Singleton<IWriteOffMgr> WriteOffMgrHolder;

也就是说IWriteOffMgr使用了单例模板,IWriteOff是IWriteOffMgr的成员变量,
那么这个时候,IWriteOff的成员有必要是static吗?

解答这个问题前,先看看static是啥东西。

java也有static关键字。以前用java,别人问static是做什么,总是很牛X的告诉他,static如果修饰类的成员变量,那么直接类.成员变量就可以,否则就需要new 类().成员变量。当然了,修饰方法也差不多这个意思。

现在看了c++的static之后,才真正理解了为什么用了static就不需要new了。因为static是放在全局数据区。它虽然是类的一个成员变量,但是它和类的其他成员变量不一样,其他成员变量必须先实例化了类,给对象分配了内存,然后再给对象的这个属性分配内存。static成员变量则不是,它在程序一启动的时候就需要给它分配内存。所以,代码中并不需要new就能够直接访问。并且,由于它在全局数据区,只有一份拷贝,每个对象访问的都是同一个变量,节省内存,保持数值一致。
需要注意的是,即使你new了,当然也是可以访问static成员变量的。

说完java,回到c++,c++的static和java的是基本完全一样的。不像常量那样子一个用const,一个用final。所以经常说精通c++转java很容易还是有一定道理的。
但是还是有一点区别,static毕竟可以在任何时候访问,非static必须实例化了才能访问。

IWriteOffMgr使用了单例,只有一份内存,那么它的全部成员变量当然是一份内存。那么我认为,只要你不是在它没实例化前使用这个static成员变量,这个static是可以去掉的。

参考文章:
http://blog.csdn.net/hackbuteer1/article/details/7487694

第二道题目:待续...
分享到:
评论

相关推荐

    C++中static关键字总结

    C++中的static关键字是一个非常重要的概念,它在不同的上下文中有不同的含义和用途。在C++中,使用static关键字可以修饰变量和函数,具有不同的作用。下面对这些知识点进行详细解释。 首先,静态变量(static ...

    C++ static关键字详细应用指南

    在C++编程语言中,static关键字是一个非常重要的概念,它在全局变量、局部变量以及函数的声明中都有着不同的用途和含义。以下是对C++ static关键字的详细应用指南的解读。 首先,让我们来了解什么是静态全局变量。...

    C++中的static关键字.doc

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。

    C++ static关键字的原理及用法详解

    ### C++ `static` 关键字的原理及用法详解 #### 一、引言 在C++编程语言中,`static`关键字扮演着至关重要的角色。它不仅可以用来控制变量和函数的可见性和生命周期,还能在类的设计中发挥独特的作用。正确地理解...

    关于C++一些关键字的用法和比较

    在C++编程语言中,关键字是具有特殊含义的保留词汇,它们用于定义程序的不同部分,如变量、函数、类等。下面将详细讨论标题和描述中提到的关键字以及引用(&)的用法。 1. **const**:const关键字用于声明常量,...

    关于static关键字的总结

    "关于static关键字的总结" static 关键字是 Java 语言中一个非常重要的概念,它可以用来修饰变量、方法、内部类和代码块等。下面我们将详细介绍 static 关键字的由来、作用和用法。 一、static 关键字的由来 在 ...

    C++关键字汇总 需要的可以下

    了解并掌握C++的关键字对于任何初学者来说都至关重要,因为这些关键字构成了语言的基础框架,直接影响到代码的编写和执行。 首先,我们要明白C++的关键字是用来控制程序流程、声明数据类型、创建类和对象、处理异常...

    C++关键字全集整合

    这五个关键字都是关于异常处理的。bad_cast用于抛出不正确的强制类型转换异常,const_cast用于取消对象的常量性,dynamic_cast用于执行类型检查,reinterpret_cast用于执行类型转换,static_cast用于执行静态类型...

    volatile关键字 Const关键字 static关键字 mutable 关键字

    在C/C++编程语言中,`volatile`, `const`, `static` 和 `mutable` 是四个非常重要的关键字,它们各自有着独特的用途和含义。下面将详细解释这些关键字的作用以及它们在程序设计中的应用。 1. `volatile` 关键字 `...

    C++中关键字的探讨

    这里我们将深入探讨几个重要的C++关键字:`const`、`static`、`sizeof`,以及操作符重载和动态内存管理的`new`与`delete`。 1. `const`关键字: `const`在C++中用于声明常量或常量引用。它确保变量的值在声明后不能...

    C++四种关键字

    本文将详细介绍C++中的四种关键字,它们分别是`reinterpret_cast`、`static_cast`、`dynamic_cast`和`const_cast`,这四种关键字为程序员提供了安全且灵活的方式来执行不同类型之间的转换。 1. `reinterpret_cast` ...

    C++面试基础之static关键字详解

    C++面试基础之static关键字详解 本文主要讲解了C++面试基础之static关键字的相关知识点,通过示例代码介绍了static关键字的作用和使用场景。 1. static关键字的作用 static关键字在C++中有多种用途,既可以修饰...

    C++关键字之static的基本用法

    在C++编程语言中,`static`关键字是一个非常重要的特性,它有多种用途,涉及到变量、函数、类成员等多个方面。下面将详细讲解`static`关键字的基本用法及其在不同场景下的应用。 1. **静态全局变量(Static Global ...

    C++关键字大全(67个).txt

    C++关键字大全(67个) asm auto bad_cast bad_typeid bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum except explicit extern false finally float ...

    浅谈C++中的几个关键字static,const,inline.doc

    "C++中的static、const、inline关键字详解" C++ 中的 static 关键字是一种非常重要的修饰符,它可以控制变量的存储方式和可见性。静态变量的两大作用是控制存储方式和控制可见性。控制存储方式是指将变量存储在程序...

    c++关键字解释大全

    ### C++关键字详解 在C++编程语言中,关键字具有特定的语法意义,它们由编译器识别并赋予特殊含义。下面将详细介绍一系列C++的关键字及其用途。 #### asm(汇编指令) - **功能**:`asm`关键字用于嵌入汇编代码到...

    关于C++中的static关键字的总结

    在C++编程语言中,`static`关键字具有双重含义,分别在面向过程编程和面向对象编程中扮演着不同的角色。下面我们将详细探讨这两种情况下的`static`关键字。 1. 面向过程设计中的`static` 1.1 静态全局变量 静态...

    C++ 的 所有关键字 和他的解释

    C++ 是一种强大的编程语言,拥有丰富的特性,其中包括多种关键字,它们在代码中扮演着重要的角色。下面将详细解释标题中提到的四个关键字:`auto`、`register`、`static` 和 `const`,以及另一个重要的关键字 `...

Global site tag (gtag.js) - Google Analytics