精华内容
下载资源
问答
  • c++的静态数据成员初始化方法

    千次阅读 2020-03-18 14:51:35
    类的静态成员变量初始化应该在类外进行 注意,不能在头文件初始化,只能在cpp文件中初始化,如果在声明中初始化, 在其它地方引用时相当于多...静态数据成员初始化的格式如下:  <数据类型><类名>::&l...

    类的静态成员变量初始化应该在类外进行

    注意,不能在头文件初始化,只能在cpp文件中初始化,如果在声明中初始化,
    在其它地方引用时相当于多次定义。
    

    静态数据成员的使用方法和注意事项如下:

    1、静态数据成员在定义或说明时前面加关键字static//静态变量的定义
    2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:
        <数据类型><类名>::<静态数据成员名>=<>  //静态变量的初始化
    

    例如:

    class A
    {  
    private:
        static int count ; // 类内声明
    };
    
    int A::count = 0 ; // 类外初始化,不必再加static关键字
    

    能在类中初始化的成员只有一种,那就是静态常量成员。

    错误做法:
    class A
    {  
    private:
        static int count = 0; // 静态成员不能在类内初始化
    };
    
    错误做法:
    class A
    {  
    private:
        const int count = 0; // 常量成员也不能在类内初始化
    };
    
    正确做法:
    class A
    {  
    private:
        static const int count = 0; // 静态常量成员可以在类内初始化
    };
    
    展开全文
  • 1.定义静态数据成员后要对静态数据成员进行初始化静态数据成员初始化: <数据类型><类名>::静态数据成员 = <值> 2.静态数据成员往往数私有的,静态数据成员不能直接访问,要通过定义为公有...

    1.定义静态数据成员后要对静态数据成员进行初始化!
    静态数据成员的初始化:
    <数据类型><类名>::静态数据成员 = <值>

    2.静态数据成员往往数私有的,静态数据成员不能直接访问,要通过定义为公有的静态函数成员来访问静态数据成员。

    3.静态函数成员接口实现时在前面不加 static 前缀。

    4.静态函数成员,不能直接访问非静态数据成员,除非通过对象名来访问该对象的非静态数据成员。

    部分代码描述:
    定义货物类,私有成员有货物重量,货物总重量(静态数据成员),初始化静态数据成员。
    static int gettotalweight();不能直接访问 weight

    #include <iostream>
    using namespace std;
    
    class Tgoods{
    private:
    	int weight;
    	static int totalweight;
    public:
    	Tgoods(int w);
    	~Tgoods();
    	int getweight();
    	static int gettotalweight();
    };
    
    //△<数据类型><类名>::<静态数据成员名>=<值>
    int Tgoods::totalweight = 0;
    
    Tgoods::Tgoods(int w){
    	weight = w;
    	totalweight += weight; 
    }
    
    Tgoods::~Tgoods(){
    	totalweight -= weight;
    }
    
    Tgoods::getweight(){
    	return weight;
    }
    
    int Tgoods::gettotalweight(){
    	return totalweight;
    }
    
    int main()
    {
    	Tgoods goods1(20), goods2(30);
    
    	cout<< Tgoods::gettotalweight() <<endl;
    
    	//getchar();
    	
    	return 0;
    }
    
    
    
    展开全文
  • C++模板类中静态数据成员初始化

    千次阅读 2018-09-21 21:25:33
    首先看代码,静态数据成员分为两种情况,第一种不依赖模版类型参数,第二种依赖模版类型参数。 template &lt;typename T&gt; class TestTemStatic{ public: static int knownTypeVar; static T ...

    首先看代码,静态数据成员分为两种情况,第一种不依赖模版类型参数,第二种依赖模版类型参数。

    
     
    1. template < typename T> class TestTemStatic
    2. {
    3. public:
    4. static int knownTypeVar;
    5. static T unKnownTypeVar;
    6. };

    那么如何初始化呢?


    对于第一种存在两种初始化方式:

    
     
    1. template <> int TestTemStatic< int /* any other type */>::knownTypeVar= 2; //具化定义,给出T类型,同时定义num,T可以是其他任意特定类型。
    2. template < typename T> int TestTemStatic<T>::knownTypeVar= 50; //范化定义,定义num时不需要知道T的类型

    如果你想给特定类型T的静态成员一个特定的值,使用第一种方式。如果你希望对任意类型T的都有一份通用的值,请使用第二种方式。

    两种初始化可以并存,对于特定类型T如果存在具化定义,则以具化定义为准。并且对于特定类型T的具化定义不可在不同的(CPP)实现文件中重复。


    
     
    1. //a.cpp
    2. template < typename T> int TestTemStatic<T>::knownTypeVar= 50;
    3. //b.cpp
    4. template < typename T> int TestTemStatic<T>::knownTypeVar= 60;

    范化定义可以在不同的(cpp)实现文件重复也可以赋予不同数值, 链接器负责选出唯一定义。选择哪一个与具体的编译顺序有关。

    因此,范化定义可以放在头文件中,具化定义放在唯一的cpp文件中。


    对于第二中只有一种初始化方式:

    template <> float TestTemStatic<float>::unKnownTypeVar=4.0f;
     
    由于unKnowTypeVar的定义依赖模版参数T的类型,所以定义unKnownTypeVar时必须给出T的类型。同样,对于特定类型T的具化定义不可在不同的(CPP)实现文件中重复。
    展开全文
  • 通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化
  • 详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序
  • C++中静态成员数据初始化问题

    千次阅读 2018-08-27 20:12:53
    静态成员变量:定义为静态成员意味着它能被所有的实例对象所共有,其修改值为该类的其它所有实例所见。 下面看一个例子 class people { public: people(int i):id(i) { num++; } private: static int num...

    静态成员变量:定义为静态成员意味着它能被所有的实例化对象所共有,其修改值为该类的其它所有实例所见。

    下面看一个例子

    class people
    {
    public:
            people(int i):id(i)
            {
                    num++;
            }  
    private:
            static int num;
            int id;
    };
    

    num为静态成员,每调用有参构造一次num就自加一次。

    首先看people这个类的空间长度sizeof(people);     注意结果为4而不是8,因为num是每个实例化对象所共有的,不是单独一个对象的空间。

    下面来看静态成员的初始化问题:

    class people
    {
    protected:
                static const int age=18;
                static int num;
                static string name;
    };
    int people::num=0;
    string people::name;
    string people::name("alex");

    1、C++规定如果是const限定的成员变量可以直接在类内初始化

    2、非const限定要在类外初始化。初始方法是<类型>  <作用域>::变量名=值;

    3、静态对象做成员变量,初始化只需要再定义一次就行了,这样会调用类的无参构造,如果需要传递值则加括号。

    展开全文
  • C++类中的静态数据成员初始化

    千次阅读 2016-05-16 14:49:24
    静态数据成员初始化必须在类以外进行定义性说明。 形式为: :: =值 静态成员注意以下几点: 1、静态成员必须初始化,如果其是有公共访问属性的可以通过对象重新设置值,其最终值以最后一次设置的为准。 ...
  • java 静态成员三种初始化方法

    千次阅读 2019-09-26 17:02:34
    声明的时候初始化 在 static block中初始化 class Demo { public static int z; ... //初始化代码 ... 写一个私有静态方法去初始化 class name { public static varType myVar = initi...
  • 静态数据成员初始化静态数据成员初始化必须在类定义外进行。 静态函数成员的作用: 静态函数成员与普通函数成员一样,在ELF 文件中都只会保留一份copy,它们的区别体现在:静态成员函数可以在不定义对象的情况...
  • php的成员变量可以在声明的同时进行初始化,但是只能用标量进行初始化。例如:class A {public $f1 = 'xxxx';static public $f2 = 100;}如果要将变量赋值为对象,那么只能在构造器中进行初始化,例如:class A {...
  • 有关const成员、static成员、const static成员初始化: 1、const成员:只能在构造函数后的初始化列表中初始化 2、static成员初始化在类外,且不加static修饰 3、const static成员:类只有唯一一份拷贝,且数值不...
  • 静态数据成员静态数据成员函数

    千次阅读 多人点赞 2016-12-27 15:25:29
    c++中的static静态数据成员和静态成员函数应该是让大家比较头疼的东西,好像也是找工作公司面试中常常问到的东西。我自己也深有体会,在学习c++的过程中,总感觉static很烦人,但是又是一个必须懂的东西,所以今天就...
  • C++类内静态成员初始化

    千次阅读 2017-11-18 16:16:08
    在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样 class A { private: static int count ; // 类内声明 }; int A::count = 0 ; // 类外初始化,不必再加static关键字 为什么?...
  • C++静态成员变量初始化

    千次阅读 2021-06-17 10:35:00
    静态成员变量初始化 静态成员变量可以初始化,但只能在类体外进行初始化。如: long long student::number = 13926572996; //在类体外对静态成员变量赋值 其一般形式为: 数据类型 类名::静态成员变量名 = ...
  • 有关const成员、static成员、const static成员初始化:1、const成员:只能在构造函数后的初始化列表中初始化(C++98); (C++11提供了类内初始化,因此内类常量可在声明类时进行类内初始化,因此该类内常量的作用...
  • C++类中常量数据成员初始化静态成员初始化
  • 静态数据成员的定义及初始化

    千次阅读 2017-11-16 11:25:30
    静态数据成员的定义及初始化
  • 总结: 1、const 数据成员不能在类内定义时初始化,在类外初始化也不行。通常通过构造函数初始化。 ...2、static 数据成员不能在类...类的静态数据成员在 类内只能声明,定义和初始化必须在类外 为什么静态成
  • 静态数据成员和静态成员函数

    千次阅读 多人点赞 2014-06-08 09:58:07
    静态数据成员 静态成员函数
  • 刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵。 常数据成员常数据成员是指在类中定义的不能修改其值...
  • 静态变量的初始化

    千次阅读 2015-07-21 10:20:40
    静态数据成员初始化的格式如下:  ::=  这表明:  (1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。  (2) 初始化时不加该成员的访问权限控制符private,
  • 看过Thinking in java的人都知道,在不考虑父类的情况下,类的初始化顺序相对简单,总体是先静态的,然后是非静态的。这里都包括成员变量和代码块。对于静态变量和静态代码块,不管它们在何处定义,总是按照其先后...
  • c++中可以对类中私有成员中的静态变量初始化吗? 我看的书上写的对私有部分的访问可以是公共部分的成员函数,也可以是友员函数,那么可以直接对私有部分的静态成员进行初始化吗? 我来答 分享 举报 4个回答 ...
  • 第七周 静态数据成员初始化

    千次阅读 2013-04-17 20:55:32
    静态数据成员初始化 * * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: object.cpp * 作 者: 袁静 * 完成日期:2013年4月17日 * 版本号: ...
  • C++静态成员变量的初始化

    万次阅读 多人点赞 2014-03-03 16:53:37
    需要注意的是:静态数据成员不能在类中初始化,一般在类外和main()函数之前初始化,缺省时初始化为0。 1.static成员的所有者是类本身,但是多个对象拥有一样的静态成员。从而在定义对象是不能通过构造函数对其...
  • 1 静态数据成员不能用参数初始化表对静态数据成员初始化 (1) 如果声明了类而未定义对象,则类的一般数据成员是不占内存空间的,只有在定义对象时,才为对象的数据成员分配空间。但是静态数据成员不属于某一个对象...
  • 要用到AfxBeginThread(threadproc,.....),函数threadproc()必须为静态函数,我使用这个函数需要调用 如下静态成员 但是我只能在 .cpp文件外部初始化为空。请问应该在哪给他们赋上后面的值,还是我的思路有问题。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 250,839
精华内容 100,335
关键字:

静态数据成员初始化