精华内容
下载资源
问答
  • 下列有关静态成员函数的描述中,正确的是: A、静态数据成员可以在类体内初始化 B、静态数据成员不可以被类对象调用 C、静态数据成员不受private控制符作用 D、静态数据成员可以直接用类名调用答案:DA,静态...

    下列有关静态成员函数的描述中,正确的是:
    A、静态数据成员可以在类体内初始化
    B、静态数据成员不可以被类对象调用
    C、静态数据成员不受private控制符作用
    D、静态数据成员可以直接用类名调用

    答案:D

    A,静态成员属于类,而不是属于某个特定的对象,它是由该类的所有对象共享的,因此不能在类的构造方法中初始化
    B,静态成员属于该类所有对象公有,可以被类对象调用
    C,静态成员收private的限制
    D,静态成员属于类和该类的所有对象,可以用类名直接调用

    展开全文
  • C++中的类静态成员静态成员函数

    千次阅读 2014-07-28 12:55:19
    静态成员

    静态成员

        静态类成员有一个特点: 无论创建了多少对象, 程序都值创建一个静态类变量副本. 也就是说, 类的所有对象共享同一个静态成员.

        注意: 静态数据成员在类声明中声明(即test.h), 在包含类方法的文件中初始化(即test.cpp). 初始化时使用作用域操作符来之处静态成员所属的类.
                  如果静态成员是整型const 或枚举类型const, 则可以在类声明中初始化.
                  如果在头文件中进行初始化, 将出现多个初始化语句副本, 从而引发错误.
                  静态数据成员的初始化不应该被放在头文件中而应该放在含有类的非inline函数定义的文件中.
                  静态数据成员可以被声明为任意类型它们可以是const 对象数组或类对象等等.

      静态成员的初始化及使用:

            如类

    // test.hxx中定义
    class Test
    {
    private:
        char *str;
        int len;
        static int num_strings;
    public:
        Test(const char *s);
        Test();
        Test(const Test& t); // 默认私有化拷贝构造函数是个好习惯
        Test& operator=(const Test& t); // 默认私有化复制操作符是个好习惯
        static int HowMany() {return num_strings;} // 此函数只为演示静态类成员函数, 请参考以下说明
    }
    // test.cpp中对静态类成员复制实现
    #include <cstring>
    #include <iostream>
    #include "test.h"
    
    using std::cout;
    
    // initializing static class member
    // 初始化类静态成员变量
    // 注意: 不能在类声明中初始化静态成员变量, 这是因为声明描述了如何分配内存, 但并不分配内存.
    //       对于静态类成员, 可以在类声明之外使用单独的语句来进行初始化, 这是因为静态类成员是单独存储的, 而不是对象的组成部分.
    //       初始化语句指出了类型, 并使用了作用域操作符.
    int Test::num_strings = 0;
    
    // class mode
    // ... 以后省略

    静态成员函数

        特别说明: 由于静态成员函数不与特定的对象相关联, 因此只能使用静态数据成员.
                          如上例子, 静态方法HowMany()可以访问静态成员num_strings, 但不能访问 str 和 len.

        private:

            1. 不能通过对象调用静态成员函数;
            2. 静态成员函数甚至不能使用this指针;

        public:

            1. 可以使用类名和作用域解析操作符来调用; (参见以上代码实现的HowMany函数)
            2. 调用方式: int cout = Test::Howmany();


    具体详细可参考: http://blog.csdn.net/damontive/article/details/17514873

    展开全文
  • 问题描述: 在Mymethod中,有static函数,有普通函数,如果想在static函数中调用普通函数,会报标题错误。 问题原因: static函数是静态函数,可以有类名::fun直接调用,即使没有Mymethod对象也可以调用,不需要...

    问题描述:

    在Mymethod中,有static函数,有普通函数,如果想在static函数中调用普通函数,会报标题错误。

    问题原因:

    static函数是静态函数,可以有类名::fun直接调用,即使没有Mymethod对象也可以调用,不需要分配对象空间;

    而普通函数必须由Mymthod对象调用,及分配了对象空间才有这个函数的意义。

    问题解决:

    1、把普通函数改为static【建议】

    2、声明一个Mymethod对象,使用对象.fun来调用

    转载于:https://www.cnblogs.com/judes/p/9211973.html

    展开全文
  • 昨天在修改项目函数功能时,在其中一个类中添加了一个静态成员变量和两个静态成员函数,结果在链接时出现一个非常典型的错误:“The follwing symbols referenced in processor “p0” could not be resolved:Class:...

    昨天在修改项目函数功能时,在其中一个类中添加了一个静态成员变量和两个静态成员函数,结果在链接时出现一个非常典型的错误:“The following symbols referenced in processor “p0” could not be resolved:Class:var1…”。我知道这是在链接的时候没有找到变量var1的定义,没有为变量var1分配内存,但是我感到奇怪的是我在类中定义了var1啊。经过有经验的同事分析,导致这个错误的原因原来是我只是在类头文件中声明了变量var1,并未在cpp文件中定义和初始化
    我在类Class中对变量的定义为:

    class:Class
    {
    protected:
        static int var1;
    public:
        static void SetValue(int temp) { var1=temp; }
        static int GetValue() { return var1; }
    };
    

    随后我在Class中在cpp文件中添加了var1的初始化:

    int Class:var1=0;
    

    然后问题就解决了,瞬间很开心有没有。对于类静态成员变量,不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。对于静态类成员,可以在类声明之外单独进行初始化,这是因为静态类成员是单独存储的,而不是对象的组成部分。要注意初始化语句指出了类型,并使用了作用域运算符,但没有使用关键词static。

    P.S.对于不能在类声明中初始化静态类成员变量的一种例外是,静态成员变量为const整数型或者枚举型。

    既然谈到了静态类成员变量,顺便了解一下静态类成员函数。可以将类成员函数声明为静态的,即包含static关键词,这样做会有以下结果:

    • 首先,不能通过对象调用静态成员函数,也不能通过this指针调用。如果静态成员函数是在工友部分声明的,则可以使用类名和作用域解析运算来调用它,在上面的例子中即为int val=Class::SetValue(val)。
    • 其次,由于静态类成员函数不与特定的对象关联,因此只能使用静态数据成员,例如静态方法GetValue()只能调用静态数据var1。

    总结一下:

    • 静态类成员变量在类头文件中声明,在cpp文件中初始化,如果是const整数型或者枚举型则可以在声明中初始化。
    • 类静态成员函数和变量都不能通过对象和this调用,只能通过类名和作用域解析运算调用,同时静态成员函数只能调用静态成员变量。

    祝枫
    2018年10月1日

    展开全文
  • 下面对静态数据成员描述中,正确的是? 正确答案: D 你的答案: 空 (错误) 静态数据成员可以在类体内进行初始化 静态数据成员不可以被类的对象调用 静态数据成员不受private控制符的作用 ...
  • C++ 静态成员静态成员函数

    千次阅读 2015-04-20 08:14:36
    在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。使用惊涛成员变量可以实现多个对象之间的数据共享而不会破坏隐藏的原则, 保证了安全性还可以节省内存。  静态成员的...
  • 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有... 静态成员变量不能在类中初始化,实际上类的定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在类的构造...
  • C++类静态成员与类静态成员函数    当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有...
  • C++静态成员函数和静态数据成员

    千次阅读 2014-08-05 22:47:10
    当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,... 静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝
  • C++类静态成员与类静态成员函数

    千次阅读 2012-05-16 19:15:08
    当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但... 静态数据成员不能在类中初始化,实际上类定义只是在描述对象
  • 静态成员变量

    千次阅读 2012-09-10 22:19:08
    不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。对于静态类成员,可以在类声明之外使用单独的语句来进行初始化,这是因为静态类成员是单独存储的,而不是对象的组成部分。
  • 类的静态成员函数和静态数据成员

    千次阅读 2015-10-10 21:31:27
    一、基本知识当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个...静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中
  • C++类静态数据成员与类静态成员函数当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例...
  • 3-6 静态数据成员与静态成员函数

    千次阅读 2016-09-20 19:07:06
    3-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题目的练习可以掌握静态数据成员和静态成员函数的用法 要求设计一个点类Point,它...
  • 静态数据成员

    2015-03-04 22:19:16
    static数据成员必须在类体之外进行定义。通常在定义时才进行初始化。但是,当类型为const static时的整形时可以在类体内进行初始化...静态数据成员可以被private之类的修饰作用,被private修饰之后,只有类的友元和成员
  • 定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。 #include using namespace std; class Client { ...
  • C++类静态成员与类静态成员函数    当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个...
  • C++_静态成员

    千次阅读 2011-08-04 22:49:58
    静态成员的分类: 静态成员包括静态变量和静态函数两部分 静态变量 静态全局变量 引入的原因(作用):隐藏变量(主要功能) 说明:即加了static,就会对其它源文件隐藏。 具体来说,如果直接定义全局变量,则该全局...
  •  类中的静态成员真是个让人爱恨交加的特性。我曾经在面试时,被主考官抓住这个问题一阵穷追猛打,直把我问的面红耳赤,败下阵来。所以回来之后,我痛定思痛,决定好好总结一下静态类成员的知识点,以便自己在以后...
  • C++中类的静态成员介绍

    千次阅读 2018-08-09 09:35:36
    本文主要介绍C++中类的静态成员的相关内容。 1 概述 在c++中,我们可以使用 static 关键字来把类成员声明为静态的。当我们将类的成员声明为静态时,就意味着无论创建多少个类的对象,该静态成员都只会存在一个副本...
  • C++对象的生存周期和类的静态成员

    千次阅读 2018-01-04 19:22:50
    对象的生存周期 静态生存周期:全局变量具有静态生存周,局部变量的静态数据的特点:函数内的静态变量,不会随着函数调用...静态成员在每个类中只有一个副本,由该类的所有对象共同维护和使用,从而实现了同一类的不同
  • 《C++标准程序库》对于静态常量成员描述如下: 在class中,可以对“整数型(integral)常数静态成员”直接赋予初值。初始化后,这个常量便可用于class之中,例如: class MyClass { static const int num = 100...
  • import 静态成员(Static import)

    千次阅读 2011-01-07 11:10:00
    import 静态成员(Static import)
  • JAVA中序列化和反序列化中的静态成员问题

    千次阅读 多人点赞 2015-11-22 14:13:25
    JAVA的序列化和反序列化中的静态成员问题  关于这个标题的内容是面试笔试中比较常见的考题,大家跟随我的博客一起来学习下这个过程。  JAVA中的序列化和反序列化主要用于: (1)将对象或者异常等写入文件,...
  • 这是前不久做的一道关于静态成员与静态方法特性的题,真的不做下题都不知道自己的基础究竟是有多浅薄,当然这里指对多态的理解一、先回顾下静态成员与静态变量吧,static关键字参考书籍《Java编程思想》 ...
  • 在c++中,下列描述错误的是( )

    千次阅读 2020-09-12 20:42:12
    A创建对象前,静态成员不存在 B静态成员是类的成员 C静态成员不能是虚函数 D静态成员函数不能直接访问非静态成员 答案:A 解析: 静态的使用注意事项: 1.静态方法只能访问静态成员(包括成员变量和成员方法) 非...
  • 静态函数可以分为全局静态函数和类的静态成员函数。 Static关键字 在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,762
精华内容 41,904
关键字:

关于静态成员的描述错误的是