当我在 Macbook Air M1 上运行 .py 文件时遇到问题:
[Running] python3 -u "/Users/kaiyuwei/Documents/graduation project/metaheuristics/run_CRO.py"
Traceback (most recent call last):
File "/Users/kaiyuwei/Library/Python/3.8/lib/python/site-packages/numpy/core/__init__.py", line 23, in <module>
from . import multiarray
File "/Users/kaiyuwei/Library/Python/3.8/lib/python/site-packages/numpy/core/multiarray.py", line 10, in <module>
from . import overrides
File "/Users/kaiyuwei/Library/Python/3.8/lib/python/site-packages/numpy/core/overrides.py", line 6, in <module>
from numpy.core._multiarray_umath import (
ImportError: dlopen(/Users/kaiyuwei/Library/Python/3.8/lib/python/site-packages/numpy/core/_multiarray_umath.cpython-38-darwin.so, 0x0002): tried: '/Users/kaiyuwei/Library/Python/3.8/lib/python/site-packages/numpy/core/_multiarray_umath.cpython-38-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/kaiyuwei/Documents/graduation project/metaheuristics/run_CRO.py", …Run Code Online (Sandbox Code Playgroud) 我是 C++ 初学者,现在正在阅读 C++ Primer。我对析构函数有一些问题:
\n第 13.1.3 章:“在析构函数中,没有类似于构造函数初始值设定项列表的内容来控制如何销毁成员;销毁部分是隐式的。销毁成员时会发生什么取决于成员的类型。类类型通过运行member\xe2\x80\x99s自己的析构函数来销毁。内置类型没有析构函数,因此不会执行任何操作来销毁内置类型的成员。”
\n所以如果我有这样的课程:
\nclass Foo {\n ~Foo() { delete pi; }\n int *pi;\n int i;\n}; \nRun Code Online (Sandbox Code Playgroud)\n当 的实例Foo要被销毁时,根据上面的文字,内置类型变量int i不会被销毁吗?那么既然它所属的对象已经被破坏了,它又将如何存在。
在第13.1.4章中:“我们在练习中使用的HasPtr类是一个很好的例子(\xc2\xa7 13.1.1,p.499)。该类在其构造函数中分配动态内存。合成的析构函数不会删除作为指针的数据成员。因此,该类需要定义一个析构函数来释放其构造函数分配的内存。
\n我知道合成析构函数不会取消分配new普通指针已分配并指向的内存,但在文本中,它表明指针对象本身也不会被合成指针删除。仍然是 class 的例子Foo,这是否意味着在一个对象之后Fooclass的对象被销毁后,指针pi不会被销毁(因此变成无效指针)?