在构造函数定义中使用void是什么意思?

时间:2009-03-28 22:22:33

标签: c++

给出以下代码:

#pragma once

class B
{
public:

    B(void)
    {
    }

    ~B(void)
    {
    }
};

我知道我也可以这样写:

#pragma once

class B
{
public:

    B()
    {
    }

    ~B()
    {
    }
};

第一个例子中有void的目的是什么?是否某种类型的练习声明构造函数采用参数?

4 个答案:

答案 0 :(得分:36)

两者是相同的,至少在C ++中是这样。在C中,提供一对空括号通常表示未指定的参数列表(与空参数列表相对)。 C ++没有这个问题。

如何正确回答这么多次?另一个SO漏洞?

答案 1 :(得分:8)

很久以前你在C中做过这样的事情(我的ISO-C生锈了:)):

void foo(a, b)
   int a, 
   int b
{
}

在创建C ++时,名称mangling需要参数的类型,因此对于C ++,它被更改为:

void foo(int a, int b)
{
}

并将此更改提交给C.

此时,我相信要避免破坏现有的C代码:

void foo() 

和此:

void foo(void)

意味着两个非常不同的东西,()表示不检查参数编号或类型(void)表示不带参数。对于C ++ ()意味着不检查任何内容不起作用,因此()(void)在C ++中的意思相同。

因此,对于C ++ ()(void)总是一样的。

至少这是我记得的方式......: - )

答案 2 :(得分:0)

afaik如果你将void传递给构造函数或任何函数作为参数,则意味着函数dosnt接受任何参数,因此示例a和b相等。但我不确定他们是否有任何改变功能签名或使其运行得更快等等。

答案 3 :(得分:0)

我只是想在函数()之类的参数之后使用void时添加:void它用于表示函数没有返回值。