w**********y 发帖数: 1691 | 1 ////////////////////////////
class A{ }; A a;
那么 sizeof(a) is 1;
class X{
void doNothing(){}
char a;
};
sizeof(x) 咋还是1,不是 1+1 =2 呢?
////////////////////////////
class Y{
virtual void doNothing(){}
};
sizeof(y) is 4..这个应该是指向virtual table的地址大小吧?
class Y{
virtual void doNothing(){}
virtual void doNothing2(){}
char a;
};
为啥是8不是4+1=5啊? 而且再添加一个member: char b..还是8..
如果换成char* b就成了12...
如果换成char a[2],结果是8
如果换成char a[10],结果是16
非常不理解.. |
|
b*****d 发帖数: 7166 | 2 class myc
{
...
public:
...
void donothing() {cout<<"I do nothing!"<
};
int main()
{
myc *p=0;
p->donothing();
}
output:
I do nothing!
经我测试,default constructor, copy constructor, = assignment operator 都没
有被调用。而且指针为0,换成NULL也一样。但是却可以使用类的函数。
请问:p指向的object(这里其实都没有,因为是0)是怎么产生的? |
|
d***a 发帖数: 13752 | 3 类似于你写了个如下的function和调用。
void donothing(myc *p)
{
cout << "I do nothing!" << endl;
}
int main()
{
myc *p = NULL;
donothing(p);
} |
|
y****1 发帖数: 26 | 4 class X{
void doNothing(){}
char a;
};
sizeof(x) 咋还是1,不是 1+1 =2 呢?
应该是成员函数不占空间 |
|
g*****g 发帖数: 34805 | 5 component.getInputMap().put(KeyStroke.getKeyStroke("SPACE"),
"doNothing"); |
|