visual studio c++中类是不是太浪费内存?

我想问,在我们建立一个对象的时候是不是将类中所有成员的数据和代码都复制了一个类复本?如果这样的话,我们建立一个对象时类中的很多函数都没有用过,那是不是可以说面向对象编程的程序中有很多冗余代码无用代码?在线期待高手指教。(

首先,其实C++中class和struct没有本质区别的。
函数代码是类的所有对象公用的,每个对象只保存自身的数据。如果是非虚函数,不会占用对象的任何空间,如果是虚函数,也只占用一个函数指针的空间而已。
你建立对象不会复制代码也不会复制类的static数据,只会保存这个类自己的数据而已。

现在的编译器很强大,优化做得很好,如果你一个对象的某些非虚函数在整个工程中没有用到过,最后是不会被链接进最后的可执行文件中的,不会占多少地方的。

建议你去了解下C++的对象模型。。回头来你就会看的更深入
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-23
不是这样的
1. 对象只包含数据成员,并不包含函数,函数代码只有一份,所有对象共享之
2. 所以参数一般要设置成对象指针或者引用,而不是对象本身,这样节省空间
第2个回答  2010-01-23
只有实例化的时候才占内存,不用怕用内存,就那么点代码,考到内存中都看不见,什么叫浪费,用了内存不能回收,总是在哪里占着这才叫浪费,你就大胆的用吧,不花钱。
第3个回答  2010-01-23
代码是共用的,不会复制;
数据会复制独立的副本,静态数据不会复制;
所以,不存在浪费内存的问题

visual studio c++中类是不是太浪费内存?
首先,其实C++中class和struct没有本质区别的。函数代码是类的所有对象公用的,每个对象只保存自身的数据。如果是非虚函数,不会占用对象的任何空间,如果是虚函数,也只占用一个函数指针的空间而已。你建立对象不会复制代码也不会复制类的static数据,只会保存这个类自己的数据而已。现在的编译器很强大,...

Visual Studio 2010 占用内存问题
你可能是开启了一些在线观看。听音乐等功能软件。占用大量内存 或者是因为中毒了。建议全盘杀毒

为什么有人劝诫年轻人不要用 Visual Studio
好,我来回答你:Visual Studio是典型的IDE,C\/C++这类编译型的的语言其实从源代码到可运行的程序需要几个过程:预处理,编译,汇编,链接。在大型的程序开发过程中我们往往需要清楚的知道问题出在哪个环节,是预处理阶段,是编译阶段,还是链接阶段。但是如果你用IDE的话,它已经把这些细节给隐藏起来了...

Microsoft Visual C++电脑里有很多个版本,能卸载吗?
另外,如果你使用的是较新的Windows系统,那么系统自带的一些MSVC++运行时组件可能是必要的,因此不建议随意卸载。这些组件即使你不安装完整的Visual Studio也会自动存在于系统中。总的来说,虽然可以卸载Microsoft Visual C++的多个版本,但在卸载之前需要充分了解你的软件和游戏对MSVC++的依赖情况。为了避免...

可以卸载visual studio吗?
首先,卸载 Visual C++ 并不会对系统的基本运行造成太大影响。这是因为 Visual C++ 主要服务于软件开发,对于日常的基本电脑使用,比如上网浏览、文档处理等,它并不是必需的。其次,对于一些系统资源有限,或者需要腾出空间给更重要软件的电脑来说,卸载 Visual C++ 可以有效地释放硬盘空间。Visual C++ ...

什么是C++
不过C99也纳入几个和C++冲突的新特性(如:可变长度数组、原生复数类型和复合逐字常数)。若要混用C和C++的代码,则所有在C++中调用的C代码,必须放在 extern "C" { } 内。 C++编程开发 集成开发环境(IDE)1.Microsoft Visual Studio(Visual C++)2.Borland C++ Builder3.Eclipse(Myln + CDT + MinGW32 + GCC)4...

C++问题求解,在类中为什么不能给数据成员初始化值:
因为类只是定义的类型, 还没有实例化,也就是没有定义类的对象(变量), 没法存储 你可以在初始化列表里进行初始化 , 而构造函数的函数体之内赋值的话, 是在初始化后,--- 至于定义成static的, 这是静态的, 所有对象共享一个副本, 程序开始执行就初始化了, 就算没有定义对象, 也有它的实例, ...

启动visualstudio开发设置选常规还是c++
2.C++是一种机器相关的语言,这意味着它更接近计算机硬件,可以更有效地访问系统资源,使程序更快,更高效。而且,在Visual Studio中,C++选项可以提供更好的编程环境,有更多的编程工具,例如代码高亮、自动完成功能和Intellisense提示。3.不同程序类型选择不同的选项是很常见的,这可以根据不同程序的需求...

c,c++,java哪个前景好(c++好还是java)
首先解释一下java、C#、C++和VC的关系。 java,C#是C++后出现的语言,VC是比较早就开始有的开发工具,C\/C++也是比较早的语言。java的开发工具 有JBuilder、JCreator、Eclipse等,而C#的开发工具就是微软的VisualStudio系列。 java、C#和C++各有个的优点,C++兼容性好,不依赖平台,java、C#依赖各自的虚拟机(C#的虚拟机...

请问现在用Visual C++什么版本比较好啊?
那么在每次输入s的时候,visual studio会自动提示是否是:shool_max_years_student 我觉得,你可以试一试visual studio 2008,看看自己能不能适应,开发效率是不是更高,毕竟程序员是不怕尝试新事物的。如果你觉得不行再换回来就行了。随便说一句,visual studio 2008比VC更占内存,毕竟是新东西。

相似回答