"><cstdlib>
namespace std {#include <stdlib.h> };Include the standard header <cstdlib> to effectively include the standard header <stdlib.h> within the std namespace.
——MSDN Library里面的解释
#include <iostream> using namespace std;
class myclass { int *p; public: myclass(int i); ~myclass(); int getval() { return *p; } };
myclass::myclass(int i) { cout<<"Allocating p\n"; p = new int; *p = i; }
myclass::~myclass() { cout<<"Freeing p\n"; delete p; }
void display(myclass & ob) //instead of using value, should use reference { //or write this function inside the class, so that it will be class member function cout<<ob.getval()<<'\n'; }
int main() { myclass a(10); display(a); return 0; }
在这段代码中不需要那个 #include <stdlib.h>
如果你要加一句 system("pause"); 以便程序运行时显示结果,则需要那个头文件。
楼主那个程序之所以出错,是因为在按值传递时,在内存中复制了一个 object a,在程序结束时,这个复制的临时的object a 也要被释放,这样在一个地址下两次释放内存,导致出错。而 如果用引用传值,则没有那个那个临时复制的对象,这样问题就解决了,还有一个办法是将 display(...) 函数,作为类的成员函数,写在类中,也可解决以上问题。