相关疑难解决方法(0)

为什么我可以在类中声明构造函数

考虑这个链接.看到这段代码:

 class MyClass
    {
    public:
        MyClass();
        ~MyClass();

    private:
        int _a;
    };

    MyClass::MyClass()
    {
    }

    MyClass::~MyClass()
    {
    }
Run Code Online (Sandbox Code Playgroud)

我们可以在类中声明构造函数.
为什么我可以在类中声明构造函数以及为什么要这样做?

c++

-1
推荐指数
3
解决办法
1万
查看次数

在类中声明的静态变量,其类型与类的类型相同

我知道为什么这是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)

为什么会这样?我知道它们特定于类而不是实例的静态变量.但这并没有给出上述问题的答案......请给我一些启示.

c++ java static class

-2
推荐指数
2
解决办法
505
查看次数

为什么函数定义foo(int i + = 1)不可能?

在功能

int foo(int i, int j)
{
    return i + j;
}
Run Code Online (Sandbox Code Playgroud)

ij未初始化,所以这个函数可以用,只用两个参数来调用:

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)

这里既有ij具有默认参数,然后调用:

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)

c++ arguments function

-2
推荐指数
1
解决办法
148
查看次数

char定义所需的内存空间

char txt[20] = "Hello World!\0";
Run Code Online (Sandbox Code Playgroud)

上面的定义分配了多少字节?考虑一个char占用1个字节,一个int2字节.请注意,只有一个",\0最后.如何计算上面定义占用的很多字节?

c memory arrays char

-3
推荐指数
1
解决办法
1626
查看次数

标签 统计

c++ ×3

arguments ×1

arrays ×1

c ×1

char ×1

class ×1

function ×1

java ×1

memory ×1

static ×1