课程
/后端开发
/C++
/C++远征之封装篇(下)
视频中都是指导从堆上实体化,如对象成员指针在堆上实体化对象成员,main函数中在堆上实体化Line 类。
那么有没有什么操作 比如在Line 中的构造函数中把对象成员指针在 栈上 实体化呢?
2018-10-26
源自:C++远征之封装篇(下) 4-5
正在回答
Node *p;
Node m(3);
*p = m(3); 赋值无法通过
p = &m(3); 赋值可以通过
这是为什么
Node 是类
上面搞错了
qq_慕虎1144658
p = &m(3); 赋值无法通过
慕斯6434274 提问者
只有使用new的指针,所指对象是在堆上。不使用new分配内存的都是在栈上。
你要非在栈上实体化,先创建对象成员,然后用指针指向成员地址就行了。
注意这样一个问题:Node *p;和 Node *p = new Node;的区别是什么?
都是node类型的指针,前者也就是node *p程序结束后会自动删除(栈上),后者new node不会自动删除,会用到delete函数删除(堆上)。
不自动删除的话,可以自己控制,方便在其他地方调用,在合适的时间再手动删除。
举报
封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通