Qt C++中,成员变量的声明和定义及初始化——int类型、vector容器

2023-11-03

核心:

1、一维数组和二维数组的初始化仅可以通过push_back(初始化列表除外)
2、数组不初始化,可是使用append进行元素的添加,但是如果是要对以有的2*3的数组进行数据更改,就必须要初始化

vector_test.h

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

//    定义时用的小括号(),编译器会认为你尝试定义一个函数,会报错。因此不可以加(),只能写到g_best
//    int psize = 1;
//    vector<double> g_best(psize);

    vector<double> test_1;

    vector<vector<int> > two_array;
};

vector_test.cpp

Vector_test::Vector_test()//构造函数
{
    qDebug() << "asd";
	qDebug() << "a " << a;

    vector<int> m;//尝试在构造函数中定义并输出,可以
    qDebug() << m;

    qDebug() << "one" << one;//vetor为空,容器中没有元素,没有分配内存空间。(类似函数的声明),可以
    qDebug() << "two" << two;

    qDebug() << "one_list" << one_list;//以列表的形式初始化,可以

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

    test_1.push_back(3.14);//一维数组增加数据
    qDebug() << "test_1" << test_1;


 	vector<int> two_array_low;//仅仅定义在函数内部就可以,不必以成员变量的形式
 
    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对成员进行访问,必须经过初始化,否则会内存泄漏。

asd

std::vector()

a 26545//int变量仅声明就可以打印值

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), std::vector(0, 0, 0, 0, 0))

错误:

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))

注意

ui显示的是字符串,pso->test[0]是数字,要使用arg进行转换,
而str本身就是字符串,就可以自己显示

    QString str = QString("%1" "%2" "%3").arg(pso->test[0]).arg(pso->test[0]).arg(pso->test[2]);
    qDebug() << "Mainwindow::str: "<< str;
    //    ui->tE_config->setText("%1").arg(str);//为什么不可以
    ui->tE_config->setText(str);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt C++中,成员变量的声明和定义及初始化——int类型、vector容器 的相关文章

随机推荐

  • 安装php7+nginx所遇到的一些问题及解决办法

    1 关于nginx启动出现403 forbidden 403表示请求资源的访问被拒绝 那么有可能你的访问地址就没有这个资源 因此解决办法 缺少索引文件index html inde php 比如下面的配置 server listen 80
  • 冒泡排序和快速排序的效率比较

    快速排序 快速排序是通过一趟排序将要排序的数据分割成独立的两部分 其中一部分的所有数都比另外一部分的所有数都要小 然后再按这个方法对这两部分数据分别进行排序 这里初始化i 1 p 0 r 7 j从0至7 这里有一个循环过程 就是拿序列里面的
  • 携手共进,聚力共赢

    2021年3月17日海伯利安宣布与 香港 国金集团 下称国金集团 有限公司达成全面战略合作协议 进一步深化双方在去中心化地图服务和商业地产行业等领域的战略合作 以引领行业发展为导向 海伯利安致力于深耕区块链底层技术 提供优质的去中心化地理空
  • python进阶(异常处理,文件操作)

    python进阶 异常处理机制 try except try except else 结构 发生异常的执行情况 执行 except 块 没有执行 else try except finally 结构 finally 块无论是否发生异常都会被
  • 顺序栈的初始化、构建、入栈,出栈和取栈顶元素

    一 顺序栈的定义 include
  • LENOVO联想笔记本电脑 拯救者Y520-15IKBN(80Y5)原装Win10系统文件,恢复出厂OEM系统

    lenovo联想笔记本电脑 拯救者Y520 15IKBN 1050 1050Ti 80Y5 出厂状态Windows10系统 原装OEM系统镜像 系统自带所有驱动 出厂主题壁纸LOGO Office办公软件 联想电脑管家等预装程序 所需要工具
  • 安装deepin V20 (1002)时如何添加根分区?

    安装deepin V20 1002 时 选择安装分区时提 发现1个错误 修复后既可以继续安装 需要添加1个根分区才那进行安装 请问 如何添加根分区 把这个ext4作为根分区 鼠标挪到这一行点一下 右侧会出现编辑的图标 可以点击进入编辑分区
  • Linux 信号学习

    Linux 信号学习 信号量的基本概念 信号产生的条件 信号如何被处理 信号的异步特质 信号的分类 可靠信号 不可靠信号 实时信号 非实时信号 常见信号与默认行为 信号处理 signal 函数 sigaction 函数 向进程发送信号 ki
  • 检验IP地址有效性

    使用inet aton函数
  • linux系统转换window系统,Window系统改装为linux系统

    以下以安装Centos6 5为例 1 下载资料 1 1 准备一个U盘 大于8G 1 2 下载U盘启动盘制作工具 UltraISO http qunying jb51 net 81 201311 tools UltraISOPortable
  • 运维笔记-nginx详解

    目录 1 简介 2 正向代理与反向代理 3 nginx的安装部署 基于Centos stream操作系统 4 nginx配置文件详解 5 高效的Web服务器 nginx 5 1nginx服务器基本配置 5 2nginx 基于IP的访问控制
  • springboot常用语法库

    今天与大家分享springboot常用语法库的基本语法 如果有问题 望大家指教 目录 1 freemarker是什么 1 1 优点 2 springboot整合freemarker 2 1 pom xml 2 2 项目配置文件 2 3 Co
  • memory-ordering-at-compile-time

    浅谈Memory Reordering Memory ordering 在我们编写的 C C 代码和它被在 CPU 上运行 按照一些规则 代码的内存交互会被乱序 内存乱序同时由编译器 编译时候 和处理器 运行时 造成 都为了使代码运行的更快
  • 解决错误“ #error “include FreeRTOS.h“ must appear in source files before “include event_groups.““例子分享

    今天来给大家分享一下 关于之前自己在学习FreeRTOS过程中遇到的一个错误提示 话不多说 我们直接来看 错误分析 首先 我们看一下错误的提示 error 35 error directive include FreeRTOS h must
  • JDBC连接MYSQL数据库

    JDBC连接数据库的要素 1 数据库URL 2 用户名 3 密码 4 Connection对象 Connection connection null PreparedStatement preparestatement null 1 读取配
  • 小程序电商商城怎么搭建?

    做电商的企业商家都会首先搭建好自己的电商商城 尤其是现在小程序盛行的时代 小程序电商商城更是做电商的企业商家的必备媒介 那么小程序电商商城怎么搭建 下面给大家说说一些流程作为参考 一 准备事项 搭建小程序电商商城 那么小程序账号是必须要有的
  • [1032]spark-3.0安装和入门

    文章目录 一 Windows安装 1 安装 2 使用 二 Linux安装 一般安装模式 下载 设置环境变量 修改配置 启动 确认启动成功 Local模式 1 安装 2 使用 yarn模式 1 安装 2 使用 3 spark的历史服务器集成y
  • MySQL左连接右表数据为Null,查询右表条件时,右表数据为Null的左表数据会被过滤的的解决方法

    未添加右表查询条件的场景 SELECT o id 左表ID u uid 右表ID u channel 右表查询条件 FROM basic order o LEFT JOIN basic user u ON o user id u uid W
  • Python办公自动化(四)

    用同样的方式处理一堆文件夹中文件 这并不难 但就是繁 所以在遇到机械式的操作时一定要记得使用Python来合理偷懒 今天我将以处理微博热搜数据来示例如何使用Python批量处理文件夹中的文件 主要将涉及 Python批量读取不同文件夹 Pa
  • Qt C++中,成员变量的声明和定义及初始化——int类型、vector容器

    核心 1 一维数组和二维数组的初始化仅可以通过push back 初始化列表除外 2 数组不初始化 可是使用append进行元素的添加 但是如果是要对以有的2 3的数组进行数据更改 就必须要初始化 vector test h class V