社区
进程/线程/DLL
帖子详情
高难度的难题:多个类型的静态成员的析构顺序是如何的
flowlight
2006-11-21 06:40:50
class CClass1
{
static CMenber1 m_Menber;
}
class CClass2
{
static CMenber2 m_Menber;
}
class CClass3
{
static CMenber3 m_Menber;
}
class CClass4
{
static CMenber4 m_Menber;
}
CClassN:CMenberN的构造顺序和析构顺序是如何的?
请N人帮忙解答
...全文
308
19
打赏
收藏
高难度的难题:多个类型的静态成员的析构顺序是如何的
class CClass1 { staticCMenber1 m_Menber; } class CClass2 { staticCMenber2 m_Menber; } class CClass3 { staticCMenber3 m_Menber; } class CClass4 { staticCMenber4 m_Menber; } CClassN:CMenberN的构造顺序和析构顺序是如何的? 请N人帮忙解答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
feng3436
2010-06-04
打赏
举报
回复
个人认为:
静态成员在该类声明的第一个对象时被作为全局变量创建,该静态成员函有对该类对象存储区域的指针,当所有对象被析构时,指针为空,该静态成员也被自动析构,这应该由编译器实现,
所有的类型包括int、char等都应该有自己的构造函数和析构函数,只不过这些函数都由编译器实现了。
我刚看到静态成员一节,以上看法都是个人猜想,有人推荐一本这方面的书就好了
neosu
2006-12-01
打赏
举报
回复
静态, 析构......
有这回事么?
Yofoo
2006-12-01
打赏
举报
回复
静态变量相当于全局变量, 只是只能内部访问,
根本没你说的这个问题
flowlight
2006-11-22
打赏
举报
回复
>>> 会有大量的数据对象交换,数据对象的在框架各层的缓存队列中来回迁移,导致了大量数据对象的拷贝/构造/析构行为
----------
可以考虑使用支持引用计数的智能指针
===============================================
我现在使用了正是类似的方式,仅将对象的引用在各层次进行传递
你可以规定使用你的垃圾回收机制的程序中禁止使用可能影响回收的静态变量,这个问题可以参考ACE的init和fini函数
=========================================
我的垃圾回收机制是由首尾的INIT和EXIT(虽然不知道ACE的机制). 我的组员可以看做我的用户,我期望我的用户使用我的组件的时候能够拥有最好的性能和易用性,并受到最少的限制
珍惜生命远离CPP
2006-11-22
打赏
举报
回复
没有顺序先后,取决于编译器
baojian88888
2006-11-22
打赏
举报
回复
>>> 但对静态成员中的资源回收的顺序,我怕出现
"部分使用人员用完资源,并下班回家后,善后的服务人员会处理垃圾,服务人员处理完当时垃圾才下班.但是还有部分人员没有下边,结果工作环境到处是垃圾"
----------
你可以规定使用你的垃圾回收机制的程序中禁止使用可能影响回收的静态变量,这个问题可以参考ACE的init和fini函数
>>> 会有大量的数据对象交换,数据对象的在框架各层的缓存队列中来回迁移,导致了大量数据对象的拷贝/构造/析构行为
----------
可以考虑使用支持引用计数的智能指针
huangyangman
2006-11-22
打赏
举报
回复
好象没有确定的顺序,编译器想怎么干就怎么干
flowlight
2006-11-22
打赏
举报
回复
C++对这点没有相关规定
这个问题是有难度的
flowlight
2006-11-22
打赏
举报
回复
shawnwan() ( ) 信誉:100 Blog 2006-11-22 09:06:34 得分: 0
static 有必要进行析构???
不是在类外进行初始化的吗?所以没有析构才对啊,,你这个对象析构掉了其他的对象怎么办??强烈建议学习C++
============================================================
-_-!
静态类型成员是会自动构造和析构的,分别发生在进程生命周期的最开始和最末尾
shawnwan
2006-11-22
打赏
举报
回复
即使要进行析构,也应该在所有对象都被析构掉后才能进行析构STATIC,,,
学习关注中
shawnwan
2006-11-22
打赏
举报
回复
static 有必要进行析构???
不是在类外进行初始化的吗?所以没有析构才对啊,,你这个对象析构掉了其他的对象怎么办??强烈建议学习C++
flowlight
2006-11-22
打赏
举报
回复
我最近在做某个高性能的应用
会有大量的数据对象交换,数据对象的在框架各层的缓存队列中来回迁移,导致了大量数据对象的拷贝/构造/析构行为,一般的池虽然可以降低资源的申请和分配,但避免不了拷贝/构造/析构行为的发生,所以我做了一个资源管理组件,结合池技术,进行数据的来回剪切,非常高效.
但对其他组员在静态成员中进行申请/释放资源的情况,我对静态成员的构造顺序和析构顺序还不太清楚
flowlight
2006-11-22
打赏
举报
回复
该问题对我很有意义
我正在做一个资源分配/垃圾收集的一个组件
该组件进行资源的自动分配和回收
在任意位置的各资源使用者可以不关心资源的管理,
该框架可以降低资源的管理难度和复杂性,比内存池性能高
对一般的资源使用者来说的工作很好
"各使用人员用完资源,并下班回家后,善后的服务人员会处理垃圾,服务人员处理完垃圾才下班.整个工作环境整洁"
但对静态成员中的资源回收的顺序,我怕出现
"部分使用人员用完资源,并下班回家后,善后的服务人员会处理垃圾,服务人员处理完当时垃圾才下班.但是还有部分人员没有下边,结果工作环境到处是垃圾"
Stefine
2006-11-21
打赏
举报
回复
在一个.h还是四个.h里啊
感觉没什么意义
LiChenYue
2006-11-21
打赏
举报
回复
猜测是按出现的顺序构造,析构则是反过来。
蹭点分!
DentistryDoctor
2006-11-21
打赏
举报
回复
视编译器而定。
针对实际的编译器,你可以加点代码实际测试一下。
baojian88888
2006-11-21
打赏
举报
回复
C++ 对于这个问题未有定义,程序中应该避免出现这样的情况
jihailong
2006-11-21
打赏
举报
回复
真难
给四个八竿子打不着的类排顺序
一分之千
2006-11-21
打赏
举报
回复
4个类之间有联系么?没联系的话哪个先哪个后有关系么?
C++之类和对象(三)
类和对象(三) 文章目录类和对象(三)再谈构造...我们首先来看一个关于构造函数和
析构
函数调用
顺序
相关的一道题: class A { public: A() { cout<<"A()"<<endl; } ~A() { cout<<"~A()"<<e
linux C/C++服务器后台开发面试题总结
主要浅谈下C/C++和PHP语言的区别:1)PHP弱
类型
语言,一种脚本语言,对数据的
类型
不要求过多,较多的应用于Web应用开发,现在好多互联网开发公司的主流web后台开发语言,主要框架为mvc模型,如smarty,yaf,升级的PHP7...
模板特化与
类型
萃取
(1)3.2主要讲了
顺序
容器,3.3讲了泛型算法,都是使用STL所必须掌握的 (2)本课程讲的特化和萃取,是STL内部实现所需要的,属于深度技术 (3)下个课程3.5会继续讲剩余的其他容器 (4)普通函数的优先级比特化函数高。错 ...
对于一些线程和进程的问题总结
互斥锁用于控制
多个
线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免
多个
线程在某一时刻同时操作一个共享资源。例如线程池中的有
多个
空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问...
Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第六章 muduo网络库简介
用之者死——ACE历史与简评》(http://blog.csdn.net/Solstice/archive/2010/03/10/5364096.aspx,ACE是(Adaptive Communication Environment)是一个C++编写的开源框架,用于开发高性能、可伸缩、分布式系统的网络...
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章