C++第17课--对象的构造(上)

本文学习自 狄泰软件学院 唐佐林老师的 C++课程


提炼1:探索类对象中的成员变量被创建的初始值

  1. 上创建对象时(局部变量),成员变量初始化为随机值
  2. 上创建对象时(new),成员变量初始值为随机值
  3. 静态存储区全局数据区 创建对象时(全局对象或静态对象),成员变量初始值为0

提炼2:如何在对象创建的时候对 对象进行初始化,引入了构造函数,构造函数的目的就是初始化对象,

注意构造函数初始化的是对象,不是成员变量,成员变量只能用初始化列表进行初始化!!!


实验1:对象中成员变量的初始值是多少?
实验2:构造函数的引入


在这里插入图片描述

在这里插入图片描述

实验1:对象中成员变量的初始值是多少?

#include <stdio.h>

class Test
{
private:
    int i;
    int j;
public:
    int getI() { return i; }
    int getJ() { return j; }
};

Test gt;

int main()
{
    printf("gt.i = %d\n", gt.getI());
    printf("gt.j = %d\n", gt.getJ());
    
    Test t1;
    
    printf("t1.i = %d\n", t1.getI());
    printf("t1.j = %d\n", t1.getJ());
    
    Test* pt = new Test;
    
    printf("pt->i = %d\n", pt->getI());
    printf("pt->j = %d\n", pt->getJ());
    
    delete pt;
    
    return 0;
}

在这里插入图片描述

思考1:类 是一种特殊的自定义类型,这种的特殊的自定义类型可以用来定义变量,从面向对象的角度说,就是定义对象,但是本质上从程序的角度说,就是通过一个自定义类型来定义一个变量。既然是变量,他就需要占用存储空间,而且是和C语言中变量占用存储空间是一致的。类=数据类型 对象=变量

结论1:从程序设计的角度,对象只是变量,因此:
1.1 在上创建对象时(局部变量),成员变量初始化为随机值
1.2 在上创建对象时(new),成员变量初始值为随机值
1.3 在 静态存储区全局数据区 创建对象时(全局对象或静态对象),成员变量初始值为0

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
实验2:构造函数的引入

#include <stdio.h>

class Test
{
private:
    int i;
    int j;
public:
    int getI() { return i; }
    int getJ() { return j; }
    Test()
    {
        printf("Test() Begin\n");
        
        i = 1;
        j = 2;
        
        printf("Test() End\n");
    }
};

Test gt;

int main()
{
    printf("gt.i = %d\n", gt.getI());
    printf("gt.j = %d\n", gt.getJ());
    
    Test t1;
    
    printf("t1.i = %d\n", t1.getI());
    printf("t1.j = %d\n", t1.getJ());
    
    Test* pt = new Test;
    
    printf("pt->i = %d\n", pt->getI());
    printf("pt->j = %d\n", pt->getJ());
    
    delete pt;
    
    return 0;
}


mhr@ubuntu:~/work/c++$ g++ 17-3.cpp
mhr@ubuntu:~/work/c++$ ./a.out 
Test() Begin
Test() End
gt.i = 1
gt.j = 2
Test() Begin
Test() End
t1.i = 1
t1.j = 2
Test() Begin
Test() End
pt->i = 1
pt->j = 2
mhr@ubuntu:~/work/c++$ 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux老A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值