Qt C++中声明、定义和初始化一维、二维数组(vector容器)(二)

5 篇文章 0 订阅
这篇博客探讨了C++中类的成员变量如何使用初始化列表进行赋值,以及未初始化变量的默认行为。文章通过实例展示了如何初始化vector,并讨论了二维数组的初始化及其内存管理问题,包括内存泄漏的可能性。同时,提到了在类的成员函数定义中需要注意的事项。
摘要由CSDN通过智能技术生成

头文件

class Vector_test
{
public:
    Vector_test();

    vector<int> one;
    vector<vector<double> > two;

    vector<int> one_list{1,2,3};
//    初始化列表的方式(构造函数定义时)给成员变量赋值,是可以的

//    int psize = 1;
//    vector<double> g_best(psize);
//    定义时用的小括号,编译器会认为你尝试定义一个函数。会报错
//    对类的成员函数而言,除了在类体中声明外,还需要在类体外定义。(大部分是这样)

    vector<double> test_1;

    vector<int> two_array_low;
    vector<vector<int> > two_array;
};

源文件

Vector_test::Vector_test()
{
    vector<int> m;
    qDebug() << m;

    qDebug() << "one" << one;
    qDebug() << "two" << two;

    qDebug() << "one_list" << one_list;

//    qDebug() << "g_best" << g_best();

    test_1.push_back(3.14);
    qDebug() << "test_1" << test_1;


    int k = 1;
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 5; j++){
            two_array_low.push_back(0);
        }
        two_array.push_back(two_array_low);
//       two_array_low.clear();
    }

    qDebug() << "two_array" << two_array;
}

outcome

int变量仅仅声明(一般只说声明,但是实际上是声明和定义一起),就可以打印出值,但是每次打印的值都不同,因为是随机分配的空间。
创建变量但并未初始化,智能的编译器会默认初始化——自动为变量分配内存地址(即内存单元),并打印出对应内存的值,但是每一次运行时,分配的地址都不同,导致打印的值不同

二维数组默认初始化(输出为vector())仅可以打印出空的、不分配空间的容器,
如果在后续使用at对成员进行访问,必须经过初始化,否则会内存泄漏。

std::vector()
one std::vector()
two std::vector()
one_list std::vector(1, 2, 3)
test_1 std::vector(3.14)
two_array std::vector(std::vector(0, 0, 0, 0, 0), std::vector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), std::vector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值