下面的代码创建一个双指针B**的B*.它将使用该指针为另一个指针分配内存,该指针将指向被调用B时创建的实例start():
class A:
class A
{
public:
A()
{
fb = new B*;
*fb = NULL;
}
~A()
{
if(*fb)
delete *fb;
delete fb;
}
B** getfb()
{
return fb;
}
private:
B** fb;
};
Run Code Online (Sandbox Code Playgroud)
class B:
class B
{
public:
B()
{
B** fb = a->getfb();
*fb = this;
}
~B()
{
B** fb = a->getfb();
delete *fb; // <--- stack overflow
*fb = NULL;
}
private:
A* a; …Run Code Online (Sandbox Code Playgroud) 为什么我不能new像这样使用运算符:
char* p;
p = new char('a')[3];
delete[] p;
Run Code Online (Sandbox Code Playgroud)
编译说:
error C2143: syntax error : missing ';' before '['
error C3409: empty attribute block is not allowed
error C2143: syntax error : missing ']' before 'constant'
Run Code Online (Sandbox Code Playgroud) 我想将两个相乘,unsigned integers但我希望结果存在于一个unsigned long long变量中
unsigned long long M;
unsigned int X;
unsigned int Y;
X = 999999;
Y = 9990;
M = X * Y;
Run Code Online (Sandbox Code Playgroud)
M应该9989990010但由于某种原因它一直存在1400055418
我已经困扰了一个星期了,我想我已经到了想哭的地步!
使用unsigned char,您可以存储0到255之间的数字
255(b10)= 11111111(b2)<=那是1个字节
这样可以轻松地执行+, - ,*等操作...
现在怎么样:
255(b10)= 10101101(b2)
使用此方法可以使用unsigned char 表示最多399个?
399(b10)= 11111111(b2)
有人可以提出一种算法来使用最后一种方法进行加法吗?