为什么必须使用'*p=a',而使用'p=&a'在构造函数中不起作用
why must use '*p=a', and use 'p=&a' does not work in constructor
我是新手。 想了解为什么"p=&a"不起作用
。 谢谢。class A{
int *p;
public:
A(int a){p=new int; p=&a;}
~A(){delete p;}
};
int main(void){
A B(11);
}
A(int a){p=new int; p=&a;}
首先为指针p
分配一个int
,然后用临时a
的地址丢弃该指针值。
所以你最终会得到一个悬空的指针和一个内存泄漏!析构函数的行为将是未定义的。
*p = a
很好,因为您正在取消引用p
.尽管如此,使用裸指针作为类成员会导致复制对象实例时出现问题。最好避免。
相关文章:
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 为什么必须使用'*p=a',而使用'p=&a'在构造函数中不起作用
- QObject::连接不起作用 - 使用函数语法找不到信号
- 模板 ctor 类型推导不起作用(没有匹配的构造函数用于初始化 ...)与函数<>参数
- 将复制构造函数设置为默认值在继承自 QObject 时不起作用
- 子类化 STL 容器:范围构造函数不起作用
- 带有此指针的模板类多重继承构造函数不起作用?
- 从数组中删除元素不起作用的函数
- VS为我提供了对构造函数的另一个解决方案,但我想知道为什么我的工作不起作用
- 模板参数在具有相同数据类型的单个类型名的构造函数中不起作用
- 隐式用户定义的转换不起作用,因为在编译C 时无法识别运算符和转换构造函数
- C++:在没有 lvalue 的情况下调用时复制构造函数不起作用
- 调用 setVisible(false) 在 QWidget 的构造函数中不起作用
- 模板堆栈类的复制构造函数中的 pop() 和 push() 不起作用
- 为什么我的右值复制构造函数不起作用
- 如果所述结构具有构造函数,则带有 new[] 的结构数组似乎不起作用
- 在Visual C++中不起作用的函数的取消映射
- C++将东西移到一个不起作用的函数中