社区
C++ 语言
帖子详情
C++中成员变量分配空间后,在成员函数中空间消失了
liupeizhao
2020-01-07 03:11:38
我有一个类,名字为A_CLUSTER,其中有一个成员变量叫作_rtcm,一个成员函数叫作decode_char(). 类定义中的相关代码如下:
在main函数中,我用_rtcm.resize()分配了空间,也成功了。
但是进入到decode_char()函数中,_rtcm的空间就没有了。请问是怎么回事呢?
...全文
260
12
打赏
收藏
C++中成员变量分配空间后,在成员函数中空间消失了
我有一个类,名字为A_CLUSTER,其中有一个成员变量叫作_rtcm,一个成员函数叫作decode_char(). 类定义中的相关代码如下: 在main函数中,我用_rtcm.resize()分配了空间,也成功了。 但是进入到decode_char()函数中,_rtcm的空间就没有了。请问是怎么回事呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
GKatHere
2020-01-19
打赏
举报
回复
在某处操作越界,将vector内容覆盖掉了,调试下看哪越界。
qq_40162781
2020-01-19
打赏
举报
回复
是否是第80行的代码改变大小了?
qq_40162781
2020-01-19
打赏
举报
回复
看不出来,应该是其他地方吧,resize是使用rtcm_t的默认构造函数
donwmufromdying
2020-01-10
打赏
举报
回复
你好歹在调用decode前边有类似这种代码:_rtcm.push_back(rtcm_t()).另外,我一般不太会往vector里放这种对象,我都是这么用: vector<rtcm_t*> _rtcm; _rtcm.push_back(new rtcm_t()); 用完了直接purge
donwmufromdying
2020-01-10
打赏
举报
回复
我是真的没看到你往你的vector里放入rtcm_t的对象,所以你的成员函数里怎么可能对呢?你这个vector是空的。你就是resize出100个预留空间有啥用?这个vector里边没对象
taodm
2020-01-09
打赏
举报
回复
size()大小请以打印/messagebox出来的为准,不要以调试器里看到的为事实。
真相重于对错
2020-01-07
打赏
举报
回复
不要这么操做vector ,vector尽可能用push_back,和pop_back
寻开心
2020-01-07
打赏
举报
回复
在你的主函数当中, 有cluster方法调用的语句后面都加一个获取size的函数, 在decode_char被调用前也加一个
这样你可以定位,这个size是什么时候变化的,找到变化的位置再说
liupeizhao
2020-01-07
打赏
举报
回复
我没有可以地释放它,可能是因为C++理解不够深刻,使用得不够正确。不知道什么原因会导致这种情况,程序中不存在变量重名。
liupeizhao
2020-01-07
打赏
举报
回复
在main函数中,_rtcm.resize()之后的size是正常的。如图:
进入函数decode_char(),再获取一次,size就变成0了。如图:
寻开心
2020-01-07
打赏
举报
回复
resize也只是把智能数组的实际长度放大了,不改变内容,其内容也没有实质意义,只是有了有效空间放在哪儿而已
decode_char之前,你可以获取一下size,看看实际的大小是否改变了
系统不会自己改变它,除非你操作了它
这是一个正经昵称
2020-01-07
打赏
举报
回复
信息还是少,看不到相关函数的实现,猜不到
C/
C++
中
局部变量、全局变量与
成员变量
之间的区别
文章目录1、
成员变量
2、全局变量3、局部变量:补充:参考 1、
成员变量
成员变量
是存在类
中
声明的。 依类而生,离开类之后就不是
成员变量
。
成员变量
只能通过对象访问。 存储 :栈
中
注:
成员变量
不能在定义的同时不能初始化。 2、全局变量 在函数外定义的变量,可为本源文件
中
其它函数所公用。 作用域:从定义变量的位置开始到本源文件结束。 存储:静态区域 程序一启动就会
分配
存储
空间
,直到程序结束才会释放。 3、局部变量: 写在函数或代码块
中
的变量, 我们称之为局部变量 作用域: 从定义的那一行开始, 一直到遇到大括
C++
局部变量
成员变量
全局变量(及文件内外全局变量)
在.h文件里声明外部全局变量如果没有加 extern 修饰符,使用该全局变量处会提示语法错误——未声明的表示符,需要在使用全局变量的文件种添加头文件 include “XXX.h;私有
成员变量
只能被该类的
成员函数
访问和修改,不能被该类的对象或该类的派生类直接访问。:类的
成员变量
是指在类的定义
中
定义的变量,它们是该类的属性,描述了该类的状态。
成员变量
可以被该类的
成员函数
访问和修改,也可以通过类的对象访问和修改。:静态全局变量也是定义在全局作用域下的变量,但与普通全局变量不同,它只能在声明它所在的文件
中
可见。
C++
中
的静态
成员变量
和静态
成员函数
C++
语言
中
static的语义 在
c++
中
,由于面向对象的思维,它与C语言
中
的作用有一些不同,有了类
中
静态成员的说法。静态成员不属于对象,而属于类。不创建对象也可调用。从代码形式上来说没有任何区别。普通类
成员函数
与静态
成员函数
的区别在于普通
成员函数
有一个隐藏的调用参数(this)指针。所以就是说静态
成员函数
没有对象也可调用。 一、静态
成员变量
类的静态
成员变量
是直接与类联系,属于类的成员而不是对象,供所有对象共享,存放于全局区,因而不计入类的内存计算。静态
成员变量
可以通过类直接访问。 (1)静态
C++
静态成员的使用(整理)
C++
中
的静态成员(静态
成员函数
和静态数据成员)属于类所有,不属于类的对象,与普通的成员相比,静态成员无this指针。 静态
成员变量
不同的对象占用不同的内存,这就使不同对象的
成员变量
相互独立,互不影响。给定两个对象a和b,假设我们修改了a.a,b.a并不会受到影响。 如果我们想要在多个对象之间共享一个数据,这就用到了静态
成员变量
。 静态
成员变量
是一种特殊的
成员变量
,被static修饰。 只能被定义一次,储在全局常量区,不占用对象的储存
空间
这就意味静态成员不随对象的创建而
分配
内存,也不随对象的销毁
【
C++
】静态成员
这就意味着,static
成员变量
不随对象的创建而
分配
内存,也不随对象的销毁而释放内存。全局数据区的变量都有默认的初始值0,而动态数据区(堆区、栈区)变量的默认值是不确定的,系统会给这个变量自动赋一个随机的值。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。●静态
成员函数
只能直接访问静态
成员变量
和静态
成员函数
(因为没有this指针,因为访问普通的
成员变量
和
成员函数
前面都隐含了this)和类外部的其它函数。--不可以调用普通的静态
成员变量
和静态
成员函数
-->*
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章