int a=25;
bool b=true;
if b
{
cout<<a<<endl;
}
给出编译时错误并要求您放置括号(b)
,尽管条件是“单音节”。如果有条件,a!=1 && a!=2
就不会出现关于括号的问题,但条件很简单。
int a=25;
bool b=true;
if b
{
cout<<a<<endl;
}
给出编译时错误并要求您放置括号(b)
,尽管条件是“单音节”。如果有条件,a!=1 && a!=2
就不会出现关于括号的问题,但条件很简单。
据我了解,它们都支持继承,都可以包含字段和函数,都可以包含构造函数和析构函数,都支持继承。不同之处在于,没有 private/protected/public 关键字的函数和变量默认发送到私有部分,其他发送到公共部分。是否可以从父类继承结构,反之亦然?如果是这样,如何在没有修饰符的情况下转换字段?例如,通过从一个类发送到一个子结构,它们是保持私有还是公开?如果不是,那为什么不呢?我的意思是完全继承,继承修饰符是公共的。
int *p = 25;
导致 int <-> int* 转换错误,即使该运算符*
是按地址值的。
int a,b,c,d,*p,x,y,z;
*p=25;
效果很好,指针的值为 25,并且变量与其他整数一起声明。为什么?就这样吧,那么 int 和 int* 是不同的数据类型,不应在同一行上指定,但它在示例中起作用int a,b,c,d,*p,x,y,z;
,其余变量按应有的方式起作用,而不是作为指针。例如,如果你写int* a, b, c;
,那么只有a
。为什么下面的代码不起作用?
int *p;
p=&25;
#include <iostream>
using namespace std;
class A
{
public:
int a;
A()
{
a=2;
}
~A()
{
a=1;
}
};
int main()
{
A * aa = new A();
delete aa;
if (aa)
cout<< aa->a;
else
cout<<"123";
}
我创建了一个指向类实例的指针,我调用构造函数,变量“a”包含数字 2。我调用析构函数(其中这个“a”应该等于 1)。首先,我检查是否有指向该类实例的指针。原来,不仅在析构函数之后存在,数字0也位于“a”中,原来0开始位于内存中,但还是被程序占用了?如何从内存中删除一个类的整个实例?如果我用丢失的类替换对类的引用(在本例中为“aa”),那么(逻辑上)这不会释放内存,而只会允许我不再通过这个引用来管理这个内存。
有一定的功能,它返回许多值。例如,您始终可以使用_,_,A=func()
. 但问题是这个函数总是返回不同数量的值。我需要将从函数接收到的所有值发送到一个数组中。在一个具体的例子中,发现在某些情况下该函数总是返回 7 个值。但是,在这种情况下,arr=func()
arr 包含 57 个值。由此我得出结论,有必要在第一次在循环中调用函数时将每个值添加到数组中。类似于for i,val in func() do arr[#arr+1]=val end
,其中 val 是函数的第 i 个返回值。
如何更高效地创建算法?给定一个二维数组,假设大小为 a b。这些相同的 a 和 b 永远不会再改变。我创建了一个三维数组,它的第一个索引只有0。对这个数组进行一些计算,并在它们的基础上创建一个新数组a b。此时,我需要添加另一个大小为 a b 的数组,并且三维数组的第一个索引可以是 0 和 1,以此类推,直到找到“正确”的大小为 a 的数组湾。您需要保存以前的状态,因为您经常需要返回它们。我一开始通过malloc分配内存,然后通过realloc改变大小。我知道 realloc 实际上会在内存中寻找合适大小的位置,然后将先前的数组复制到新位置,并清除旧内存。在我的例子中,数组会经常增长,这意味着你需要不断地花时间将数据从一个内存区域传输到另一个内存区域。有没有其他方法可以在不移动数据的情况下完成所有这些操作?不可能预先猜测/计算所需的内存量,甚至近似地,最大的第一个索引很容易只有 0 和 100500,这完全取决于输入到第一个数组 a * b 大小的数据。