比如一个类,我实例化这个类,生成一个对象,
class cat
{ int age;
int weight;
void meow();
};
cat a;
对于C++,请问一下这个对象名a是否占用内存?它的意义是什么?
对于JAVA,我们知道如果要实例化一个类,那么这个对象名是占4个字节的,它是用来存放对象的地址。
...全文
1869打赏收藏
JAVA与C++区别,对象名占空间吗
比如一个类,我实例化这个类,生成一个对象, class cat { int age; int weight; void meow(); }; cat a; 对于C++,请问一下这个对象名a是否占用内存?它的意义是什么? 对于JAVA,我们知道如果要实例化一个类,那么这个对象名是占4个字节的,它是用来存放对象的地址。
中午吃饭前随便写了一个程序(Linux下写的,Windows已经很少用),代码如下:
#include <cstdio>
#include <cstdlib>
// 包含成员变量,不含虚函数
class A {
private:
int m_val1;
char m_val2;
public:
~A() {}
void TestFunction(void) { printf("In Class A\n"); }
};
// 不含成员变量,不含虚函数
class B {
public:
~B() {}
void TestFunction(void) { printf("In Class B\n"); }
};
class C {
public:
~C() {}
virtual void TestFunction(void) { printf("In Class C\n"); }
};
int main()
{
A testA;
B testB;
C testC;
printf("A Class Size: %d\n", sizeof(testA));
printf("B Class Size: %d\n", sizeof(testB));
printf("C Class Size: %d\n", sizeof(testC));
return 0;
}
执行结果如下:
llvm@ubuntu:~$ ./a.out
A Class Size: 8
B Class Size: 1
C Class Size: 8