面向对象之对象的构造(上)

本文探讨了C++中对象初始化的问题,指出成员变量初始值可能是随机的或0,提出通过initialize()成员函数初始化,但存在手动调用和顺序问题。文章介绍了构造函数的概念,它是与类同名、无返回值的特殊成员函数,用于在对象创建时自动初始化成员变量,确保对象在使用前被正确初始化。
摘要由CSDN通过智能技术生成

 

前面讲了类和类的对象。那么类的成员变量初始值是多少

有人说是随机值,有人说是0。

下面以一个示例程序来进行分析。
 

#include <stdio.h>

class Test
{
private:
	int i;
	int j;
public:
	int GetI() {return i;}
	int GetJ() {return j;}
};

Test ti;


int main()
{
	Test tt;
	Test* tf = new Test;
	
	printf("ti.i = %d, ti.j = %d\n", ti.GetI(), ti.GetJ());
	printf("tt.i = %d, tt.j = %d\n", tt.GetI(), tt.GetJ());
	
	printf("tf->i = %d, tf->j = %d\n", tf->GetI(), tf->GetJ());	
	
	return 0;
}

编译以后,得到下面的结果。

ti 这个对象在全局存储区,tt 这个对象在栈上分配空间,tf 这个对象在堆上分配内存。这个例子中,对象初始化时,得到的值是不确定的。

从程序设计的角度,对象只是一个变量。因此:

---- 在栈上创建对象是,成员变量初始为随机值

---- 在堆上创建对象是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值