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++$ 

在这里插入图片描述

发布了207 篇原创文章 · 获赞 100 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/LinuxArmbiggod/article/details/104098773