differences in code, please explain

  • Thread starter Thread starter Petded
  • Start date Start date
P

Petded

Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

whereas c# use this

s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);

Why c++ uses :: and what does it represent, a why c# just uses a .

Also C# only ever uses a . whereas sometimes c++ uses -> instead of ::

thanks for any help
 
Petded a écrit :
Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

whereas c# use this

s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);

Why c++ uses :: and what does it represent, a why c# just uses a .

In C++, "::" is used as the scope resolution operator for namespaces
and static members, whereas "." is used to derefrence a member of an
actual object. Also, "->" is used to dereference a pointer (if you need
to know the difference between a pointer, an object and a reference, I
suggest you pick up a good C++ introductory book, because newsgroup are
not the good place to learn those things).
Also C# only ever uses a . whereas sometimes c++ uses -> instead of ::

Yep, and IMHO C# is wrong to use the same syntax to do different things
: it makes things a little simplier for beginners, but at the end ot
day it messes up the whole thing.

Arnaud
MVP - VC
 
Arnaud, you can't use "::", '.', or "->" in the same places (i.e. they're
context sensitive), so *why not* consolotate them into one overridden
"operator".

Is

a.b();
a.c.d();
a.e variable;

really less clear than:

a::b();
a::c->d();
a::e variable;

?
 
Peter Ritchie said:
Arnaud, you can't use "::", '.', or "->" in the same places (i.e. they're
context sensitive), so *why not* consolotate them into one overridden
"operator".

Is

a.b();
a.c.d();
a.e variable;

really less clear than:

a::b();
a::c->d();
a::e variable;

I believe so, because when reading code that you don't know, it make clear
wether "a" is a namespace or a class, an object instance or a pointer, which
is not always immediatly obvious...

Arnaud
MVP - VC
 
Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

whereas c# use this

s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);

Why c++ uses :: and what does it represent, a why c# just uses a .

Also C# only ever uses a . whereas sometimes c++ uses -> instead of ::

Others have explained to you the difference... but this statement is not
true. C# also uses -> to for pointer-dereferencing member access.

In both languages, with p being a pointer (compile error otherwise):

p->val

is exactly equivalent to

(*p).val
 
Back
Top