类 变量初始化

来源:互联网 发布:恒腾网络 福利待遇 编辑:程序博客网 时间:2024/04/30 11:32

类对象的构造顺序是这样的:

1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员

2.进入构造函数后在构造函数中执行一般计算

  1.类里面的任何

到此,我的问题解决。但是我还想趁机复习一下C++类初始化

  1.初始化列表:CSomeClass::CSomeClass() : x(0), y(1){}

  2.类外初始化:int CSomeClass::myVar=3;

  3.const常量定义必须初始化C++类里面使用初始化列表;

  4.C++不能定义常量数组

 

关于const,复习一下常量指针: 

 如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。

c++各种不同型成员根据是否static 、时候const型的初始化方法不尽相同,java的语法就没有这么复杂,怪的得那么多人都跑去学Java了。以前面试时被人问到这个问题回答不出来,写代码时也经常搞乱了,这里翻了下书,总结一下。

-----------------Test.h----------------------------

#pragma once

class Test

{

private :

      int   var1;

// int   var11= 4;错误的初始化方法

      const int   var2 ;

   //const int   var22 =22222;错误的初始化方法

      static int   var3;

// static int   var3333=33333;错误,只有静态常量成员才能直接赋值来初始化

      static const int   var4=4444; //正确,静态常量成员可以直接初始化

      static const int   var44;

public:

Test(void);

~Test(void);

};

--------------------Test.cpp-----------------------------------

#include ".\test.h"

int Test::var3 = 3333333; //静态成员的 正确的初始化方法

//int Test::var1 = 11111;; 错误 静态成员才能初始化

//int Test::var2 = 22222; 错误

//int Test::var44 = 44444; // 错误的方法,提示重定义

Test::Test(void) :var1(11111),var2(22222)   //正确的初始化方法 , var3(33333) 不能在这里初始化

{

          var1 =11111; //正确,普通变量也可以在这里初始化

          //var2 = 222222;错误,因为常量不能赋值,只能在 constructor initializer(构造函数的初始化列表)” 那里初始化

          

    var3 =44444;   //这个赋值时正确的,不过因为所有对象一个静态成员,所以会影响到其他的,这不能叫做初始化了吧

}

Test::~Test(void)

{

}

 

原创粉丝点击