再问类的静态成员和耦合性的关系

96掌门师兄 2015-01-15 11:08:48
现在我的几个类都需要使用 系统启动时间,我就想把它做成静态成员

class CInstance
{
public:
static time_t ms_exeStartTime;
}

time_t CInstance::ms_exeStartTime = time(NULL);

现在其他的几个类需要使用这个启动时间 如:
class class1
{
void Test()
{
time_t currentTime = time(NULL);
int iSpan = int(currentTime - CInstance::ms_exeStartTime); //感觉耦合性强,不太好
.....

}
}


如果作为参数传给class1,如
class1::class1(const time_t & exeStartTime)
{
m_exeStartTime = exeStartTime;
}
调用的时候
class1 c1(CInstance::ms_exeStartTime); //class1和CInstance松耦合,但是class1浪费了一个存储空间,创建的对象越多,越浪费

我是将这个启动时间作为参数传递给 class1比较好, 还是在class1的成员方法里直接使用 CInstance::ms_exeStartTime比较好呢?

CInstance::ms_exeStartTime这种用法,感觉有点像单例,对类的耦合性破坏很大,求大神详细分析。



...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
96掌门师兄 2015-01-20
  • 打赏
  • 举报
回复
引用 3 楼 lsq19871207 的回复:
你在一个类中引用了另外一个类,耦合性自然会增大 其实你根本没有必要把 static time_t ms_exeStartTime放在一个类中,从内存空间占用情况来看,它也是一个全局变量,分配在静态存储区 你弄个全局变量呢,也是分配在静态存储区,所以你直接用全局变量来代替,空间占用相同的情况下,却解耦了!更何况这个time_t 又能够占用大空间呢
个人感觉使用OOp不太好......不过也是没有办法的事情
worldy 2015-01-19
  • 打赏
  • 举报
回复
使用全局变量,否则,即使使用也必然存在类之间的关联
信阳毛尖 2015-01-19
  • 打赏
  • 举报
回复
你在一个类中引用了另外一个类,耦合性自然会增大 其实你根本没有必要把 static time_t ms_exeStartTime放在一个类中,从内存空间占用情况来看,它也是一个全局变量,分配在静态存储区 你弄个全局变量呢,也是分配在静态存储区,所以你直接用全局变量来代替,空间占用相同的情况下,却解耦了!更何况这个time_t 又能够占用大空间呢
处处留心 2015-01-15
  • 打赏
  • 举报
回复
你主要是不想包含其他类的头文件,然后看起来像几个类都有关联 我的做法是,添加两个文件,global.h 和global.cpp 把变量放在这两个文件中,做为全局的,需要的时候包含头文件。 虽然比类成员变量浪费内存空间,但耦合性就低很多
aqiu348503 2015-01-15
  • 打赏
  • 举报
回复
CInstance::ms_exeStartTime这种耦合性不强吧,但最好做成一个静态成员函数或单例

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧