当前位置: 网站首页>小程序开发>400电话办理

高端!网站定制/设计/优化/二次开发/制作/搭建-灌南高端网站建设

发表日期: 2022-07-27 11:58:57 浏览次数:64

高端!网站定制/设计/优化/二次开发/制作/搭建-灌南高端网站建设

网站建设.png

初始化              var3 =44444; //这个赋值是正确的,不过因为所有对象一个静态成员,所以会影响到其他的,这不能叫做初始化了吧}Test::~Test(void){}//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:

  • a. 常量型成员变量

  • b. 引用型成员变量

  • c. 静态成员变量

  • d. 整型静态常量成员变量

  • e. 非整型静态常量成员变量

对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始化列表的方式进行。在构造函数体内给常量型成员变量和引用型成员变量赋值的方式是行不通的。

静态成员变量的初始化也颇有点特别。

参考下面的代码以及其中注释:

// Initialization of Special Data Member#include <iostream>using namespace std;     class BClass{public:    BClass() : i(1),ci(2), ri(i) // 对于常量型成员变量和引用型成员变量,必须通过        {                // 参数化列表的方式进行初始化。在构造函数体内进行赋值的方式,是行不通的。    }    voidprint_values()    {        cout<< "i =\t" << i << endl;        cout<< "ci =\t" << ci << endl;        cout<< "ri =\t" << ri << endl;        cout<< "si =\t" << si << endl;        cout<< "csi =\t" << csi << endl;        cout<< "csi2 =\t" << csi2 << endl;        cout<< "csd =\t" << csd << endl;    } private:    inti; // 普通成员变量    constint ci; // 常量成员变量    int&ri; // 引用成员变量    staticint si; // 静态成员变量    //staticint si2 = 100; // error: 只有静态常量成员变量,才可以这样初始化    staticconst int csi; // 静态常量成员变量    staticconst int csi2 = 100; // 静态常量成员变量的初始化(Integral type) (1)    staticconst double csd; // 静态常量成员变量(non-Integral type)    //staticconst double csd2 = 99.9; // error: 只有静态常量整型数据成员才可以在类中初始化};// 静态成员变量的初始化(Integral type)int BClass::si = 0;// 静态常量成员变量的初始化(Integral type)const int BClass::csi = 1;// 静态常量成员变量的初始化(non


cconst double csd2 = 99.9; // error: 只有静态常量整型数据成员才可以在类中初始化

};

// 静态成员变量的初始化(Integral type)

int BClass::si = 0;

// 静态常量成员变量的初始化(Integral type)

const int BClass::csi = 1;

// 静态常量成员变量的初始化(non-Integral type)

const double BClass::csd = 99.9;

 

// 在初始化(1)中的csi2时,根据Stanley B. Lippman的说法下面这行是必须的。

// 但在VC2003中如果有下面一行将会产生错误,而在VC2005中,下面这行则可有可无,这个和编译器有关。

const int BClass::csi2;

 

int main(void)

{

    BClassb_class;

    b_class.print_values(); 

    return0;

}

c++ 静态成员小结,c++,static

类中的静态成员真是个让人爱恨交加的特性。我曾经在面试时,被主考官抓住这个问题一阵穷追猛打,直把我问的面红耳赤,败下阵来。所以回来之

后,我痛定思痛,决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 


静态类成员包括静态数据成员和静态函数成员两部分。 


静态数据成员

类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 


1.静态数据成员的定义。 


静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 (声明vs.定义(初始化)) 其定义方式与全局变量相同。举例如下: 


xxx.h文件 

class base{ 

private: 

    static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 

}; 

 

xxx.cpp文件 

const int base::_i=10;//定义(初始化)时不受private和protected访问限制.

注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif 或者 #pragma once 也不行。 


高端!网站定制/设计/优化/二次开发/制作/搭建-灌南高端网站建设

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878