答案是堆内存。之前明明看过java类初始化过程的,但一下子看到这样的题目,还是懵了。百度后,那些帖子的回复各有各说,脑袋都看得要塞住了,还是看书求证吧。李刚的《疯狂Java》第128页开始,有一个类从初始化开始,在内存发生什么变化的详细过程,这里简单记录一下。classPer..
分类:
编程语言 时间:
2014-12-03 10:38:59
阅读次数:
290
确定对象使用前已被初始化
原则:不论是类的成员变量还是其他作用域的变量,使用前都要保证已被初始化(或者说赋值)
一、无任何成员的内置类型初始化
/*内置类型通过复制完成初始化*/
int x = 0;
const char* a = "abc";
int a[2] = {0,0};
二、STL容器初始化
STL容器关注容器大小,防止越界,初始化的工作不用关心
三、类成员变量初始化...
分类:
编程语言 时间:
2014-11-27 10:45:25
阅读次数:
160
一、类的初始化对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量。类的编译决定了类的初始化过程。编译器生成的class文件主要对定义在源文件中的类进行了如下的更改:1) 先按照静态成员变量的定义顺序在类内部声明成员变量。2) 再按照原java类中对成员变量的初始化顺序进行...
分类:
编程语言 时间:
2014-10-21 17:23:48
阅读次数:
224
这里主要学习初始化,分为: 1.变量初始化 2.构造函数初始化 3.数组初始化 4.继承初始化 1.变量初始化 成员初始化分为两种: (1)成员变量初始化 在定义成员变量时,如果没有给变量赋于初始值,系统会给出一个默认值。 这里有两种选择:要么使用系统的默认初始值,要么自己定义初始值。 系统给出的默...
分类:
编程语言 时间:
2014-09-28 01:53:10
阅读次数:
231
Non-static data member initializers非静态成员变量初始化变得简单As a simple example, class A { public: int a = 7; };would be equivalent to class A...
分类:
编程语言 时间:
2014-09-20 17:00:59
阅读次数:
174
①T *p =new T;
②T *p =new T();
这两类用法不同点的总结。
1.若T为类类型,且用户定义了构造函数,则两种形式的效果完全相同,都会调用这个定义了的构造函数来初始化内部成员变量,但是如果此构造函数中并未对成员变量初始化,则这个时候内部的成员变量进行默认初始化——值是未定义的。
2.若T为类类型,但是用户并没有定义任何构造函数,则我们可以知道编译器会为该类合成一...
分类:
编程语言 时间:
2014-08-16 15:09:40
阅读次数:
231
C++成员变量、构造函数的初始化顺序一、C++成员变量初始化1、普通的变量:一般不考虑啥效率的情况下可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行2、static静态变量(本地化数据和代码范围):static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,...
分类:
编程语言 时间:
2014-08-12 16:44:24
阅读次数:
306
在C++11中,允许非静态成员变量的初始化有多种形式:初始化列表; 使用等号=或花括号{}进行就地的初始化。可以为同一成员变量既声明就地的列表初始化,又在初始化列表中进行初始化,只不过初始化列表总是看起来“后作用于”非静态成员。也就是说,初始化列表的效果总是优先于就地初始化的。#include .....
分类:
编程语言 时间:
2014-08-05 13:32:59
阅读次数:
230
在查找const相关资料的过程中,又遇到了另外一个问题,就是C++类中const static(或者static const)成员变量应当如何初始化的问题。 查阅了许多资料,发现VC环境下,只允许const static成员变量在类外初始化,这个应该是编译器遗留下的bug(你也可以说是要求严...
分类:
其他好文 时间:
2014-06-21 08:16:01
阅读次数:
187