堆栈对象的问题
#include <iostream>
using namespace std;
class A {
public:
A() {
cout << "A()" << endl;
aptr = new char[100];
}
~A() {
cout << "~A()" << endl;
delete[] aptr;
}
private:
char* aptr;
};
class B : public A {
public:
B() {
cout << "B()" << endl;
bptr = new char[100];
}
~B() {
cout << "~B()" << endl;
delete[] bptr;
}
private:
char* bptr;
};
void free_function(A* p)
{
delete p;
}
int main(void)
{
cout << "--------------------------" << endl;
B b;
B* bobject_s = &b;
B* bobject = new B;
free_function(bobject);
return 0;
}
课上代码中基类A,派生类B,的构造函数都在堆区分配了char[100]大小的内存,
-
B* bobject = new B;这段代码栈区指针bobject指向堆区内存一块B类对象的内存,内存中包含bptr这个堆区内存。 这样理解对吗?
-
B b;
B* bobject_s = &b;
这段代码栈区指针bobject_s指向栈区对象b的地址,那么b这个栈区对象,内部怎么储存char[100]这样堆区内存呢?
基类的指针或引用指向派生类对象的时候,可以通过删除基类指针调用派生类析构函数和基类析构函数,防止资源的未释放
课件上面这句话不太理解
13
收起
正在回答 回答被采纳积分+1
1回答
物联网/嵌入式工程师
- 参与学习 394 人
- 提交作业 22954 份
- 解答问题 1163 个
行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,软硬件通吃 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星