Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 组合和继承的内存布局有什么不同吗? 结构A { INTA、b、c; int fa(){/*something*/} }; 结构B1:A { int a1、b1、c1; int ba(){/*something*/} }; 结构B2 { A A; int fa(){a.fa();} int a2、b2、c2; int ba(){/*something*/} }; void main() { B1; B2; //某物 }_C++_Oop_C++11_Inheritance_Memory - Fatal编程技术网

C++ 组合和继承的内存布局有什么不同吗? 结构A { INTA、b、c; int fa(){/*something*/} }; 结构B1:A { int a1、b1、c1; int ba(){/*something*/} }; 结构B2 { A A; int fa(){a.fa();} int a2、b2、c2; int ba(){/*something*/} }; void main() { B1; B2; //某物 }

C++ 组合和继承的内存布局有什么不同吗? 结构A { INTA、b、c; int fa(){/*something*/} }; 结构B1:A { int a1、b1、c1; int ba(){/*something*/} }; 结构B2 { A A; int fa(){a.fa();} int a2、b2、c2; int ba(){/*something*/} }; void main() { B1; B2; //某物 },c++,oop,c++11,inheritance,memory,C++,Oop,C++11,Inheritance,Memory,b1和b2在内存中的布局是否相同?另外,在类B2中,当我使用继承时,我是否基本上完成了编译器所做的一切?B1有一个到A的隐式转换,而B2没有。当然,它们的内存布局有所不同。但问题不是内存效率之类的,而是什么在语义上更合适。因此,在设计说明中不应考虑这一点。这很容易通过调试器或printf进行检查("%p、 ..它们可以具有相同的布局。但是如果它们具有相同的布局,则不允许您依赖它。这一问题的答案取决于您希望了解此信息的原因。您想知道编译器是否以类似的方式实现继承?或者您想知道B1和B2是否具有相同

b1
b2
在内存中的布局是否相同?另外,在类
B2
中,当我使用继承时,我是否基本上完成了编译器所做的一切?

B1
有一个到
A
的隐式转换,而
B2
没有。当然,它们的内存布局有所不同。但问题不是内存效率之类的,而是什么在语义上更合适。因此,在设计说明中不应考虑这一点。这很容易通过调试器或
printf进行检查("%p、 ..
它们可以具有相同的布局。但是如果它们具有相同的布局,则不允许您依赖它。这一问题的答案取决于您希望了解此信息的原因。您想知道编译器是否以类似的方式实现继承?或者您想知道
B1
B2
是否具有相同的布局相同的布局,因为它允许您将指向一个对象的指针视为指向另一个对象的指针?
B1
具有到
a
的隐式转换,而
B2
没有。当然,这些对象的内存布局有所不同。但问题不是内存效率之类的,而是什么在语义上更合适。因此,您应该在设计说明中不考虑这一点。这很容易用调试器或
printf检查("%p、 ..
它们可以具有相同的布局。但是如果它们具有相同的布局,则不允许您依赖它。这一问题的答案取决于您希望了解此信息的原因。您想知道编译器是否以类似的方式实现继承?或者您想知道
B1
B2
是否具有相同的布局相同的布局,因为它允许您将指向一个的指针视为指向另一个的指针?