最近一位面试官问我,C++中的异常对象是在堆上还是栈上分配的?我不确定,但我回答说它在栈上分配,因为我认为没有“new”或“malloc”。这个回答正确吗?
然后他继续问我,如果它在栈上,假设类A抛出了一个异常对象,比如“e”,而类B捕获了“e”。由于“e”在A的栈上,那么B如何访问这个“e”?
对于第二个问题,我不是很清楚。有人能给我一些示例代码,展示“类A抛出e,类B捕获它”的情况吗?此外,我猜B可以通过复制值或地址来捕获e,但面试官只是否定了我的回答,没有给出正确的答案,那么正确的答案是什么?是否有机制可以确保类对象可以从其他类对象中捕获异常?谢谢~
然后他继续问我,如果它在栈上,假设类A抛出了一个异常对象,比如“e”,而类B捕获了“e”。由于“e”在A的栈上,那么B如何访问这个“e”?
对于第二个问题,我不是很清楚。有人能给我一些示例代码,展示“类A抛出e,类B捕获它”的情况吗?此外,我猜B可以通过复制值或地址来捕获e,但面试官只是否定了我的回答,没有给出正确的答案,那么正确的答案是什么?是否有机制可以确保类对象可以从其他类对象中捕获异常?谢谢~