请教一个MFC另外一个类返回字符函数的问题

创建了一个新类,如果调用这个新类的成员变量的话,直接把新类对象实例化,然后新类.m_str
,这样调用不就行了吗?为什么我看别人写的代码,还要在新类的头文件定义几个
字符串CSTRING函数,用这个函数返回成员变量的值,请问下这样不是多此一举吗?跟
我用的方法有什么区别呢?

4个回答

通过函数返回成员变量值的目的是隐藏类实现的细节,这也是面向对象的特点。

qq_29670983
qq_29670983 回复wafstudio: 谢谢,还是不明白,请问能推荐几本好书看看吗?
接近 5 年之前 回复
wafstudio
wafstudio 回复qq_29670983: 这个问题属于软件设计开发阶段的问题,随便找本C++教材在介绍类的时候都会灌输这个思想。百度一个“面向对象编程(OOP)的一个关键原则就是封装,把暴露的数据封装起来,尽可能地让对象管理它们自己的状态,因为过多的依存性会造成系统的紧耦合,这使得任何一点小小的改动都可能造成许多无法预料的结果。 封装机制是一个控制对象数据和状态强有力的方法,它对外部世界隐藏了其内部细节,即使内部实现发生了变化,只要接口不变,对于外部来说,使用方法也没有改变。这样,为改变内部实现所需要付出的代价就很小了。”
接近 5 年之前 回复
qq_29670983
qq_29670983 请问下如果编译成程序之后,不管是M_STR还是CSTRING的函数那不都是看不出来的吗?
接近 5 年之前 回复

不要直接返回栈上的局部变量,因为堆栈会在函数返回后销毁。

如果愿意把m_str 公开出来。那么你的做法可以。但考虑c++的封装性。一般不会public变量。而是通过成员函数方式来返回字符

oyljerry
oyljerry 回复qq_29670983: 就是两者方法其实都可以,取决于你对于这个m_str变量的设计
接近 5 年之前 回复
qq_29670983
qq_29670983 谢谢您的回答,不过还是不太明白
接近 5 年之前 回复
oyljerry
oyljerry 回复qq_29670983: 根据类的函数名,以及文档说明来描述,不然即使m_srtr变量,别人也不知道,还是要文档
接近 5 年之前 回复
qq_29670983
qq_29670983 请问下如果编译成程序之后,不管是M_STR还是CSTRING的函数那不都是看不出来的吗?
接近 5 年之前 回复

变量隐藏,这是最基本的面相对象思想,不让别人知道你设计的细节,直接调用接口就可以克

qq_29670983
qq_29670983 请问下如果编译成程序之后,不管是M_STR还是CSTRING的函数那不都是看不出来的吗?
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问