2 qq 31630271 qq_31630271 于 2016.04.13 00:04 提问

关于c++的一些问题……大一新生刚接触
c++

1 定义一个类之后去创建一个它的对象,类的定义里没有构造函数,然后输出对象的成员,是乱码 乱码这个值是谁给的?

7个回答

caozhy
caozhy   Ds   Rxr 2016.04.13 00:45

系统分配了内存,这块内存原来可能是做别的事情的,用完被释放,但是处于性能考虑不会清零,你分配的时候也不会初始化,所以是随机的内容。
如果是VC++调试版本的程序,则会被初始化成0xccccc...,所以如果是字符串,你会看到“烫烫烫……”

nkmnkm
nkmnkm   2016.04.13 07:08

如果没有为这个成员进行初始化,一般就是乱码。
如果这个成员不是字符串,而你按字符串输出,就是乱码。

zealfory
zealfory   2016.04.13 08:54

C++不进行初始化的成员变量,值是随机的,你想一下你给它分配了内存,这块内存之前可能存放其它数据,现在没用了才可以被分配,你不赋初值内存中还是存放之前的数据,不是谁给的,跟构造函数无关,未声明构造函数,系统默认有一个空的构造函数,public xxxxx(){ },无参,也没有赋值的语句

blue_skyrim
blue_skyrim   2016.04.13 18:02

你没有未分配的空间,计算机就随机分配。

VisualEleven
VisualEleven   Ds   Rxr 2016.04.14 16:57

你定义了类的对象,当时该类的成员确实随机值,打印出什么都有可能,视你成员变量的类型来确定

CQU_LiuHC
CQU_LiuHC   2016.04.13 00:17

如果没有定义构造函数,那么就是使用的默认构造函数,所有成员也都有一个默认的初值,可能是0,null或者一个随机的数据。

vipzhxsh
vipzhxsh 回复qq_31630271: 这个值不是谁给的,这是成员变量所占的内存遗留下来的
一年多之前 回复
qq_31630271
qq_31630271 我知道你说的这些,但我想知道这些值是谁给的
一年多之前 回复
suwu150
suwu150   2016.04.13 00:14

怎么是乱码呢??是不是机器的问题??

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!