470,841 Members | 1,050 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,841 developers. It's quick & easy.

differences in code, please explain

Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,Pro tocolType::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


Jun 15 '06 #1
5 978

Petded a écrit :
Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,Pro tocolType::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

Jun 15 '06 #2
On 15 Jun 2006 01:43:53 -0700, ad******@club-internet.fr wrote:

Thanks


Petded a écrit :
Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,Pro tocolType::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


Jun 15 '06 #3
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;

?
--
http://www.peterRitchie.com/
"ad******@club-internet.fr" wrote:

Petded a écrit :
Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,Pro tocolType::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

Jun 16 '06 #4

"Peter Ritchie" <PR****@newsgroups.nospam> a écrit dans le message de news:
6E**********************************@microsoft.com...
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
Jun 16 '06 #5

<Petded> wrote in message news:m7********************************@4ax.com...
Hi,

can anyone explain to me why

vc++ managed use this

s= gcnew Socket(
AddressFamily::InterNetwork,SocketType::Stream,Pro tocolType::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

thanks for any help

Jun 19 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

13 posts views Thread by Blue | last post: by
reply views Thread by mihailmihai484 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.