精华内容
下载资源
问答
  • c++静态类

    万次阅读 2015-03-09 19:51:12
    C++静态类

    今天在写C++的一个随机数生成器时,看到所有成员变量和成员函数都是static类型。想到这个整个类其实不需要实例,或者说只需要一份(产生随机数应该不需要多个实例呀~),干嘛不直接搞个static静态类呢?
    于是写了这个实验一下:

    #include <iostream>
    using namespace std;
    
    static class Test
    {
    public:
        static int GetData()
        {
            return data;
        }
    private:
        static int data;
    };
    
    int Test::data = 3;
    
    int main()
    {
        cout<<Test::GetData()<<endl;
        return 0;
    }

    倒是可以编译运行,但是会报一个warning
    warning C4091: ‘static ’ : ignored on left of ‘Test’ when no variable is declared
    这是什么意思呢?后来查了一下,在msdn社区上看到了解释:

    c++根本就没有静态类这个东西,这么写编译器会认为其实是想做
    static class Test
    {

    }tt;
    这个static关键字是针对tt而非Test的。但是这里的实际情况是没有变量tt,所以编译器给出了warning并且忽略了static关键字

    msdn社区:
    https://social.msdn.microsoft.com/Forums/en-US/75cc5b2e-0dd1-4efc-8d5a-1f497679d8e4/static-classes-causing-warnings

    展开全文
  • C++静态类

    千次阅读 2015-12-19 10:47:31
    1. 静态类相当于一个sealed abstract类,主要的一个优点是写在栈中,安全高速稳定,而且在执行的时候,十分优先。 类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。 使用静态类...
    1. 静态类相当于一个sealed abstract类,主要的一个优点是写在栈中,安全高速稳定,而且在执行的时候,十分优先。 类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。 使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。
    2. 它们仅包含静态成员。
    

    它们不能被实例化。
    它们是密封的。
    它们不能包含实例构造函数)。
    因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。
    3. 使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实例。
    静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。
    4. 静态类不能有实例构造器。
    静态类不能有任何实例成员。 静态类不能使用abstract或sealed修饰符。 静态类默认继承自System.Object根类,不能显式指定任何其他基类。
    静态类不能指定任何接口实现。
    静态类的成员不能有protected或protected internal访问保护修饰符。

    展开全文
  • c++静态类实现

    万次阅读 2017-12-16 14:11:10
    c++静态类 静态类 静态类实现 静态类声明

    废话不多说,先上代码:

    静态类 View.h文件代码:

    static class  View
    {
    private:
        static Student  student;
    public:
    
        static int much ;
        static void  addStudent();
    
    };

    view.cpp 实现代码:

    Student View::factor;
    int View::much = 0;
    //必须要有的静态成员实现代码
    
    void View::addStudent() {
        Student st1;
        factor.add(st1);
        //此处静态成员不能使用 this->
    }

    主函数 main 外部调用

    
    #include "View.h"
    
    
    int main()
    {
        View::addStudent();
        //静态函数调用是可采用此方法
        return 0;
    }

    注:

    • 静态类所必须的初始化在类外进行(不应在.h文件内实行),而前面不加static,以免与外部静态变量(对象)相混淆。

    • 初始化时不加该成员的访问权限控制符private,public等。

    • 初始化时使用作用域运算符来标明它所属类,静态数据成员是类的成员(而不是对象的成员,因没有对象)。

    • 静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。

    • 不能再实现中使用this关键字因为它已经实例化,开辟了内存

    • 调用时,标明所属静态类(也可以像math类采用命名空间,没有命名冲突)

    展开全文
  • 关于c++静态类的说法

    千次阅读 2014-11-21 08:44:27
    观点一:根据现代的C++观点,静态类没有必要存在于C++中。 一个类是对一个概念的描述,类的本质是它维护了一个不变式,也就是说它有一个状态,它所有的接口都是为了访问或者获取这个状态以及跟状态相关的操作。一个...

    看了网上的观点,大致有这几种比较好的。

    观点一:根据现代的C++观点,静态类没有必要存在于C++中。

    一个类是对一个概念的描述,类的本质是它维护了一个不变式,也就是说它有一个状态,它所有的接口都是为了访问或者获取这个状态以及跟状态相关的操作。一个静态类没有状态,因此就没有必要成为一个类。在C++中静态方法不如非静态非类的成员方法好,尤其是使用了模板的情况下。

    我的疑问:如果只声明类起显示作用呢?

    观点二:C++里不可能有静态类的说法,相反,在Java里倒是有这么一说。
    C++由于具有传值、传址、哑元功能,使用静态类不仅多余而且也完全没有必要,相反,对Java、C#之类“改进型语言”来说,由于为避免指针,防止过多的产生对象实例,就必须额外的引入一些新的“先进性”的东西,比如静态类。然而,静态类本身是一个半成品(或是终极产品),由于其无法继承,静态类的产品化会因为不便升级而成为一种垃圾。
    同样,即便是在Java里,静态类的作用也仅相当于包含静态实例的C++类型定义,然而从语义上还没有C++定义的直观,为了对付一个小小的指针,避免伪引用,有必要做这么大的动作吗?我对此感到不值。

    观点三:C#或Java的
    类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR;特指:C#语言) 自动加载。 
    静态类只用于包含静态成员的类型,它既不能实例化,静态类的特性是防止继承,防止外部来NEW。
    所以C++中不存在静态类
    观点四:使用静态类来包含不与特定对象关联的方法。
    例如,创建一组不操作实例数据并且不与代码中的特定对象关联方法是很常见的要求。您应该使用静态类来包含那些方法。
    静态类的主要功能如下:
        它们仅包含静态成员。(仅包含静态成员不是上面说的包含不操作实例数据,不与对象关联矛盾吗?)
        它们不能被实例化。
        它们是密封的。
        它们不能包含实例构造函数(C# 编程指南)。
        静态类不能使用abstract或sealed修饰符。
        静态类默认继承自System.Object根类,不能显式指定任何其他基类。
        静态类不能指定任何接口实现(不能有接口实现,那起什么作用)。
        静态类的成员不能有protected或protected internal访问保护修饰符。
    观点五:

    静态类和静态类成员(C# 编程指南)

    静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。

    结论:

    当一个类完全脱离实例数据和对象时可以使用静态类。

    静态类可以有自己的成员变量和成员函数,但都必须是静态的。对静态成员变量只能是程序运行开始时初始化,不能在类内初始化。

    静态类没有基类。



    展开全文
  • C/C++静态类和this指针

    2016-12-26 19:34:45
    1、静态类C++的静态成员不仅可以通过对象来访问,还可以直接通过类名来访问。class CBook{ public: static double price;//需要通过类外来进行初始化 }int main(void){ CBook book; book.price;//通过对象来访问 ...
  • c++静态类 及 静态成员函数

    千次阅读 2016-09-13 18:34:21
    静态类相当于一个sealed abstract类,主要的一个优点是写在栈中,安全高速稳定,而且在执行的时候,十分优先。 类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。 使用静态类来...
  • C++静态类成员小结(转)

    千次阅读 2011-12-01 22:36:49
    静态类成员包括静态数据成员和静态函数成员两部分。  一 静态数据成员:  类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守...
  • [C++]静态类和单例类

    千次阅读 2019-09-05 22:21:39
    静态类和单例类:一般静态类就是对于过去c语言程序的封装,静态类里面都是静态的方法,不需要传入对象指针。直接调用,所以使用起来比较方便,比较适合于一些不依赖于变量的一些类。 单例:理论上静态类也可以做成非...
  • C++静态成员和静态成员函数 从C++书上了解了C++的静态成员和静态成员函数,但不是很清楚有什么用,在网上搜了两篇大牛写的博客看了下, 下面是我的一些总结。 1.静态成员 C++的静态成员类似于全局变量,是在程序...
  • C++深度剖析教程5】C++静态成员函数

    万次阅读 多人点赞 2017-12-15 01:35:29
    先给大家推荐一个C++面试题集锦吧,保证能让你在众多面试者脱颖而出,点击...C++静态成员变量)。 我们回顾一下客户的需求: -统计在程序运行期间某个的对象的数目 -保证程序的安全性(不能使用全局变量)
  • 最近复习C++的一些知识,遇到了一个我比较容易混淆、傻傻分不清的知识点,那就是C++的变量的类型初始化或赋初值,大致有普通成员变量、静态成员变量、成员常量这三种,还有一种组合的静态成员常量。 看到这几种数据...
  • C++ 静态 常量

    千次阅读 2017-06-06 11:24:38
    C++静态成员变量是用static修饰的成员变量,不属于对象的一部分,而是一部分,因此可以在没有实例化任何对象的时候使用静态成员变量。但是必须初始化它。 由于静态变量只能被初始化一次,所以初始化成员变量不要...
  • C++ 静态成员

    千次阅读 2017-04-26 09:39:55
    C++中,采用静态成员来解决同一个的对象共享数据的问题。静态成员分为静态数据成员和静态成员函数。 1. 静态数据成员  静态数据成员在一个中只分配一次存储空间,也就是一个的所有对象的静态数据成员...
  • C++ 静态成员的内初始化

    千次阅读 2018-08-24 13:35:01
    一般来说,关于C++类静态成员的初始化,并不会让人感到难以理解,但是提到C++ 静态成员的”内初始化”那就容易迷糊了。 我们来看如下代码: 1 //example.h 2 #include&lt;iostream&gt; 3 #include&...
  • C++静态构造函数

    千次阅读 2019-02-21 23:42:28
    C++静态构造函数 如果数据成员被声明为static,那么它在编译时就必须被初始化。仅含static的则放在之外,实现文件之中;同时含有const的则放在之内,直接跟在数据的定义之后。 在实际代码编写中碰到的问题是:...
  • C++静态变量

    千次阅读 2019-09-11 11:41:36
    C++中,静态成员(static member)必须在内声明,在外初始化。 要注意的是,静态成员变量在中仅仅是声明,没有定义,所以要在的外面定义,实际上是给静态成员变量分配内存。初始化是...
  • C++ 类静态成员函数

    万次阅读 2020-12-06 18:25:14
    。。。
  • C++静态成员

    千次阅读 2016-02-13 17:41:29
    C++静态数据成员 1.1静态数据成员是一种特殊的数据成员。static int height; 1.2静态数据成员可以通过类名来引用,也可以通过对象来引用。 1.3静态数据成员不属于某一个对象,静态数据成员的存储空间是在静态存储...
  • C++静态成员变量和静态成员函数

    千次阅读 2015-11-29 20:28:41
    C++静态成员变量和静态成员函数 数据成员可以分静态变量、非静态变量两种.  静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态...
  • C++ 静态方法和静态属性

    千次阅读 2018-10-10 23:32:18
    来源:我的博客站 OceanicKang |《C++ 静态方法和静态属性》 #include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;lt;string&amp;amp;amp;amp;gt; class ...
  • C++静态常量探究

    千次阅读 2015-05-22 13:18:28
    c++静态常量详解。c++静态常量应用场景及使用方法。 今天想,如果我希望一个中,具有一些常量,但是不希望常量在各个的对象中有多份拷贝(占用不必要的内存)。想应该如何定义。 需求细化: 需求1、常量(可以是...
  • c++静态函数

    千次阅读 2016-08-26 10:34:38
    //c++语言 静态成员数据和静态方法 //对象与对象之间的成员变量是相互独立的.要想共用数据,则需要使用静态成员或静态方法 //#只要在中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用...
  • C++静态成员

    千次阅读 2020-10-08 21:55:45
    一般情况下,静态成员在内声明,外定义和初始化 内声明时+关键字static 外定义时:对象的数据类型 类名::静态成员名字 如果在内初始化,初值必须是常量表达式 静态成员不属于的任何对象,但可以...
  • c++静态方法和静态成员

    千次阅读 2019-05-23 20:43:33
    c++静态方法和静态成员 便于实现同一的不同对象之间数据共享 静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里...
  • c++类静态函数/静态成员变量 特性的一点总结
  • C++静态成员注意事项

    千次阅读 2013-05-12 14:23:49
    C++静态成员注意事项 在日常的编程过程中,很多朋友对于C++静态成员注意事项不是很清楚,本文将介绍一下C++静态成员注意事项的内容。 C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读...
  • C++ 类静态成员变量声明和定义

    千次阅读 2018-11-04 16:45:36
    这是在学习C++类中的一个简单总结 静态成员变量的声明和定义的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 303,756
精华内容 121,502
关键字:

c++静态类

c++ 订阅