我想知道这两者之间的区别(抱歉,我不知道这个主题的名称)。
我来自C#,我习惯于编写System.data以及classA.MethodA。我已经发现在Cpp中,使用名称空间我需要使用::,with classmembers - >。但是简单的“。”呢? 我创建了System :: data:odbc :: odbcConnection ^ connection。后来我能够使用connection.Open。为什么不连接 - >打开?
对不起,我确信它在网上很容易找到,但我不知道这些的英文术语。 谢谢你们
答案 0 :(得分:4)
如果您有指向对象的指针,请使用:
MyClass *a = new MyClass();
a->MethodName();
另一方面,如果您有一个实际的对象,则使用点分表示法:
MyClass a;
a.MethodName();
答案 1 :(得分:2)
为了略微澄清先前的答案,VC ++中的插入符号^可以被认为是*用于大多数意图和目的。它是一个类的“句柄”,意思是略有不同,但相似。看到这个简短的谷歌搜索说明:
http://blogs.msdn.com/branbray/archive/2003/11/17/51016.aspx
因此,在您的示例中,如果您初始化连接,如:
System::Data::Odbc::OdbcConnection connect;
//You should be able to do this:
connect.Open();
相反,如果你这样做:
System::Data::Odbc::OdbcConnection^ connect1 = gcnew System::Data::Odbc::OdbcConnection();
connect1.Open(); // should be an error
connect1->Open(); //correct
答案 2 :(得分:0)
简短回答:C ++允许您管理自己的记忆。因此,您可以通过使用指针(基本上是包含内存地址的整数变量,而不是值)来创建和操作内存。
a.Method()
表示a
是类的实例,您可以从中调用Method
。
a->Method()
表示a
是指向类实例的指针,您可以从中调用Method
。
答案 3 :(得分:0)
当您使用类似a->成员的语法时,您正在使用指向结构或对象的指针。 当您使用类似a.member的语法时,您使用的是结构或对象,而不是指向结构或对象的指针。
我为你做了一个快速谷歌,THIS看起来相当快速和正确的解释。