C++ cli Cpp。净额:“;a->;方法名称“;vs";a、 方法名称“;
我想知道这两者之间的区别(对不起,我不知道这个主题的名称) 我来自C#,在那里我被用来编写System.data和classA.MethodA。我已经发现,在Cpp中,我需要使用名称空间::,类成员->。但是简单的“怎么办?”? 我已经创建了System::data:odbc::odbcConnection^连接。后来我可以使用connection.Open。为什么不打开连接 对不起,我确信这是一种很容易在网上找到的东西,但我不知道这些的英文名称。C++ cli Cpp。净额:“;a->;方法名称“;vs";a、 方法名称“;,c++-cli,C++ Cli,我想知道这两者之间的区别(对不起,我不知道这个主题的名称) 我来自C#,在那里我被用来编写System.data和classA.MethodA。我已经发现,在Cpp中,我需要使用名称空间::,类成员->。但是简单的“怎么办?”? 我已经创建了System::data:odbc::odbcConnection^连接。后来我可以使用connection.Open。为什么不打开连接 对不起,我确信这是一种很容易在网上找到的东西,但我不知道这些的英文名称。 谢谢大家如果您有指向对象的指针,请使用: My
谢谢大家如果您有指向对象的指针,请使用:
MyClass *a = new MyClass();
a->MethodName();
另一方面,如果您有一个实际对象,则使用虚线表示法:
MyClass a;
a.MethodName();
简短答案:C++允许你管理自己的内存。因此,您可以通过使用指针(本质上是包含内存地址的整数变量,而不是值)来创建和操作内存。
a.Method()
表示a
是类的实例,您可以从中调用Method
a->Method()
意味着a
是指向类实例的指针,您可以从中调用Method
当您使用类似->成员的语法时,您使用的是指向结构或对象的指针。
使用.member等语法时,使用的是结构或对象,而不是指向结构或对象的指针
我为您快速搜索了一下,看起来解释得相当快和得体。为了稍微澄清前面的答案,VC++中的插入符号^。它是一个类的“句柄”,意思稍有不同,但很相似。请参阅谷歌的简短解释: 因此,在您的示例中,如果您像这样初始化连接:
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
同样值得一提的是C++/CLI“handles”的用法,因为这个问题是专门针对这一点提出的。这里也有一个关于堆栈溢出的插入符号的很好的讨论: