동적으로 및 정적으로 인스턴스화 된 개체 번호를 찾으려고합니다. 변수 myheap이 선언되지 않은 오류가 발생합니다.정적 클래스 멤버 선언 오류
#include<iostream.h>
#include<stdlib.h>
class A {
public:
static int x; //To count number of total objects. incremented in constructor
static int myheap; //To count number of heap objects. Incremented in overloaded new
void* operator new(size_t t) {
A *p;
p=(A*)malloc(t);
myheap++;
return p;
}
void operator delete(void *p) {
free(p);
myheap--;
}
A() {
x++;
}
~A() {
x--;
}
};
int A::x=0;
int A::myheap=0;
int main() {
A *g,*h,*i;
A a,c,b,d,e;//Static allocations 5
g= new A();//Dynamic allocations 3
h= new A();
i= new A();
cout<<"Total"<<A::x<<'\n';
cout<<"Dynamic";
cout<<'\n'<<"HEAP"<<A::myheap;
delete g;
cout<<'\n'<<"After delete g"<<A::x;
cout<<'\n'<<"HEAP"<<A::myheap;
delete h;
cout<<'\n'<<"After delete h"<<A::x;
cout<<'\n'<<"HEAP"<<A::myheap;
delete i;
cout<<'\n'<<"After delete i"<<A::x;
cout<<'\n'<<"HEAP"<<A::myheap;
}
A를 myheap를 수정 후 :이 일 myheap. 코드와 그 작업을 업데이트했습니다. 모두 감사합니다. 내가 새것에서 p를 돌려주지 않을 때, 그것은 경고를 주었고 컴파일되었습니다. 그러나 실행에 코어 덤프를 주었다. 어떤 이유? – Sandeep
요점 외에도 여전히 관련성이 높은 iostream & stdlib.h 대신 iostream & cstdlib 인 확장형 헤더 파일 버전을 사용하십시오. 후자는 C++ 프로젝트에서 사용하는 C 헤더 파일입니다. 헤더 이름 앞에 ac를 추가하여 C++ 헤더 파일을 제공하십시오. 여러분이 사용하고있는 것들은 구식이며, 여러분의 코드에서 오류를 철자하지는 않지만 현대 컴파일러에서 그리고 앞으로는 확실히 문제가 될 수 있습니다. 내가 무슨 뜻인지에 대한 자세한 설명은 http://members.gamedev.net/sicrane/articles/iostream.html – rocknroll