考虑这个链接.看到这段代码:
class MyClass
{
public:
MyClass();
~MyClass();
private:
int _a;
};
MyClass::MyClass()
{
}
MyClass::~MyClass()
{
}
Run Code Online (Sandbox Code Playgroud)
我们可以在类中声明构造函数.
为什么我可以在类中声明构造函数以及为什么要这样做?
我知道为什么这是C++中的错误.
class A
{
A b;
};
int main() {}
Run Code Online (Sandbox Code Playgroud)
因为type of b is unresolved at the compile time.那么为什么下面的代码是正确的?
class A
{
static A b;
}
int main() {}
Run Code Online (Sandbox Code Playgroud)
如果它是静态的,变量b的类型是否已被解析?
最后,令我惊讶的是以下代码适用于JAVA:
public class Main
{
Main g;
public static void main(String[] args)
{
System.out.println("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我知道它们特定于类而不是实例的静态变量.但这并没有给出上述问题的答案......请给我一些启示.
在功能
int foo(int i, int j)
{
return i + j;
}
Run Code Online (Sandbox Code Playgroud)
既i和j未初始化,所以这个函数可以用,只用两个参数来调用:
foo(5, 6); // 11
Run Code Online (Sandbox Code Playgroud)
好的,但是C++有默认参数,并且可能的定义如下:
int foo(int i = 1, int j = 2)
{
return i + j;
}
Run Code Online (Sandbox Code Playgroud)
这里既有i和j具有默认参数,然后调用:
foo(5, 6); // 11
foo(5); // 7
foo(); // 3
Run Code Online (Sandbox Code Playgroud)
是可能的.那么,为什么这个定义:
int foo(int i += 1, int j += 2)
{
return i + j;
}
Run Code Online (Sandbox Code Playgroud)
这些电话:
foo(5, 6); // 14
foo(5); // 8
foo(); // …Run Code Online (Sandbox Code Playgroud) char txt[20] = "Hello World!\0";
Run Code Online (Sandbox Code Playgroud)
上面的定义分配了多少字节?考虑一个char占用1个字节,一个int2字节.请注意,只有一个",\0最后.如何计算上面定义占用的很多字节?