Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > "void Method()" vs "void Method(void)"

Reply
Thread Tools

"void Method()" vs "void Method(void)"

 
 
Ollej Reemt
Guest
Posts: n/a
 
      04-20-2005
Hello,

I would like to know if there is a difference in c++ between the
following two method-declarations:

void Method();

and

void Method(void);


I know there is a difference in C (the first case means the function may
have parameters, but they are not yet defined?).
But how is the semantik in C++? Is there a difference or are both
declarations equal in _every_ case?

I would be glad to get an answer to this question (and perhaps a
reference where this topic is explained (C++-standard?)).

Regards
ollej
 
Reply With Quote
 
 
 
 
Sharad Kala
Guest
Posts: n/a
 
      04-20-2005

"Ollej Reemt" <(E-Mail Removed)> wrote in message
news:d458o7$(E-Mail Removed)-Oldenburg.DE...
> Hello,
>
> I would like to know if there is a difference in c++ between the
> following two method-declarations:
>
> void Method();
>
> and
>
> void Method(void);


They are same. Former is the preferred type in C++. Reference to the
Standard --

8.3.5/2 - "...If the parameter-declaration-clause is empty, the function
takes no arguments. The parameter list (void) is equivalent to the empty
parameter list."

Sharad


 
Reply With Quote
 
 
 
 
Thomas Matthews
Guest
Posts: n/a
 
      04-20-2005
Ollej Reemt wrote:

> Hello,
>
> I would like to know if there is a difference in c++ between the
> following two method-declarations:
>
> void Method();
>
> and
>
> void Method(void);
>
>
> I know there is a difference in C (the first case means the function may
> have parameters, but they are not yet defined?).
> But how is the semantik in C++? Is there a difference or are both
> declarations equal in _every_ case?
>
> I would be glad to get an answer to this question (and perhaps a
> reference where this topic is explained (C++-standard?)).
>
> Regards
> ollej


In addition to Sharad's reply, I prefer the latter method since
it is explicit and works in both languages.

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.comeaucomputing.com/learn/faq/
Other sites:
http://www.josuttis.com -- C++ STL Library book
http://www.sgi.com/tech/stl -- Standard Template Library
 
Reply With Quote
 
Oliver Robbe
Guest
Posts: n/a
 
      04-20-2005
Hello Sharad and Thomas,

thanks for your answers, that was exactly what I wanted to know.

Regards
ollej
 
Reply With Quote
 
Rolf Magnus
Guest
Posts: n/a
 
      04-20-2005
Thomas Matthews wrote:

>> I know there is a difference in C (the first case means the function may
>> have parameters, but they are not yet defined?).
>> But how is the semantik in C++? Is there a difference or are both
>> declarations equal in _every_ case?
>>
>> I would be glad to get an answer to this question (and perhaps a
>> reference where this topic is explained (C++-standard?)).
>>
>> Regards
>> ollej

>
> In addition to Sharad's reply, I prefer the latter method since
> it is explicit and works in both languages.


The point about it working in both languages is valid - if you make a header
that is supposed to be used in both languages, but how is it explicit?
IMHO, if you want to say "no parameters", the most explicit way to describe
that is by putting no parameters between the parens, not by putting a fake
parameter of type void there.

 
Reply With Quote
 
Kristo
Guest
Posts: n/a
 
      04-20-2005
Rolf Magnus wrote:
> Thomas Matthews wrote:
>
> >> I know there is a difference in C (the first case means the
> >> function may have parameters, but they are not yet defined?).
> >> But how is the semantik in C++? Is there a difference or are both
> >> declarations equal in _every_ case?
> >>
> >> I would be glad to get an answer to this question (and perhaps a
> >> reference where this topic is explained (C++-standard?)).
> >>
> >> Regards
> >> ollej

> >
> > In addition to Sharad's reply, I prefer the latter method since
> > it is explicit and works in both languages.

>
> The point about it working in both languages is valid - if you make a
> header that is supposed to be used in both languages, but how is it
> explicit? IMHO, if you want to say "no parameters", the most explicit
> way to describe that is by putting no parameters between the parens,
> not by putting a fake parameter of type void there.


I believe 'explicit' in this case refers to what Ollej originally said:
in C, an empty parameter list does not necessarily mean that the
function takes no arguments. In a header file shared between C and C++
code, foo(void) will *explicitly* tell either language that foo takes
no arguments. Writing foo() will only explicitly say that to C++ code.

Kristo

 
Reply With Quote
 
Victor Bazarov
Guest
Posts: n/a
 
      04-20-2005
Kristo wrote:
> Rolf Magnus wrote:
>
>>Thomas Matthews wrote:
>>
>>
>>>>I know there is a difference in C (the first case means the
>>>>function may have parameters, but they are not yet defined?).
>>>>But how is the semantik in C++? Is there a difference or are both
>>>>declarations equal in _every_ case?
>>>>
>>>>I would be glad to get an answer to this question (and perhaps a
>>>>reference where this topic is explained (C++-standard?)).
>>>>
>>>>Regards
>>>>ollej
>>>
>>>In addition to Sharad's reply, I prefer the latter method since
>>>it is explicit and works in both languages.

>>
>>The point about it working in both languages is valid - if you make a
>>header that is supposed to be used in both languages, but how is it
>>explicit? IMHO, if you want to say "no parameters", the most explicit
>>way to describe that is by putting no parameters between the parens,
>>not by putting a fake parameter of type void there.

>
>
> I believe 'explicit' in this case refers to what Ollej originally said:
> in C, an empty parameter list does not necessarily mean that the
> function takes no arguments. In a header file shared between C and C++
> code, foo(void) will *explicitly* tell either language that foo takes
> no arguments. Writing foo() will only explicitly say that to C++ code.


And what Rolf said is still true: in English having something to designate
nothing is the source of confusion. Haven't you seen (in the Standard, no
less) pages, where the only _content_ is "this page is left intentionally
blank". Isn't it a self-contradictory statement? That's what "explicitly
emtpy argument list" means in C++: no arguments, nothing between the
opening parenthesis and the closing one. I actually strongly agree with
Rolf on this one. To be _explicit_, one should simply have bare parens.

V
 
Reply With Quote
 
Jack Klein
Guest
Posts: n/a
 
      04-22-2005
On Wed, 20 Apr 2005 14:43:57 -0400, Victor Bazarov
<(E-Mail Removed)> wrote in comp.lang.c++:

> Kristo wrote:
> > Rolf Magnus wrote:
> >
> >>Thomas Matthews wrote:
> >>
> >>
> >>>>I know there is a difference in C (the first case means the
> >>>>function may have parameters, but they are not yet defined?).
> >>>>But how is the semantik in C++? Is there a difference or are both
> >>>>declarations equal in _every_ case?
> >>>>
> >>>>I would be glad to get an answer to this question (and perhaps a
> >>>>reference where this topic is explained (C++-standard?)).
> >>>>
> >>>>Regards
> >>>>ollej
> >>>
> >>>In addition to Sharad's reply, I prefer the latter method since
> >>>it is explicit and works in both languages.
> >>
> >>The point about it working in both languages is valid - if you make a
> >>header that is supposed to be used in both languages, but how is it
> >>explicit? IMHO, if you want to say "no parameters", the most explicit
> >>way to describe that is by putting no parameters between the parens,
> >>not by putting a fake parameter of type void there.

> >
> >
> > I believe 'explicit' in this case refers to what Ollej originally said:
> > in C, an empty parameter list does not necessarily mean that the
> > function takes no arguments. In a header file shared between C and C++
> > code, foo(void) will *explicitly* tell either language that foo takes
> > no arguments. Writing foo() will only explicitly say that to C++ code.

>
> And what Rolf said is still true: in English having something to designate
> nothing is the source of confusion. Haven't you seen (in the Standard, no
> less) pages, where the only _content_ is "this page is left intentionally
> blank". Isn't it a self-contradictory statement? That's what "explicitly
> emtpy argument list" means in C++: no arguments, nothing between the
> opening parenthesis and the closing one. I actually strongly agree with
> Rolf on this one. To be _explicit_, one should simply have bare parens.
>
> V


Once upon a time, I wrote the users manual for a product. I generated
some of the illustrations from AutoCAD drawings of some of the
mechanical parts. As a joke, I created one drawing of a part cracked
in half to go along with the text warning the user about doing
something that could cause damage.

The powers that be saw it, decided it was funny, and wanted it in the
manual. Then at the very last minute, they changed their mind and
wanted it out.

So when the manual was printed, it had several of those pages that
said "this page intentionally blank", and one page, the one that had
held that particular illustration, that said "this page
unintentionally left blank."

Nobody ever noticed.

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments