我创建了一个名为 Kwadrat
的类。该类具有三个 int
字段。我的开发环境建议我通过 ::
Kwadrat
创建的对象访问字段strong> & ->
运算符。我尝试了这两个运算符,发现 ->
运算符能够成功访问对象字段中的数据,但是 不能这样说->
运算符。
我还发现 .
运算符也将访问类成员。我很困惑,不明白为什么有三个成员用于访问对象成员和/或方法。谁能给我解释一下这三个运算符有什么区别?
1. ->
2. ::
3. .
#include <iostream>
using namespace std;
class Kwadrat{
public:
int val1,
val2,
val3;
Kwadrat(int val1, int val2, int val3)
{
this->val1 = val1; // Working
this.val2 = val2; // Doesn't Work!
this::val3 = val3; // Doesn't Work!
}
};
int main()
{
Kwadrat* kwadrat = new Kwadrat(1,2,3);
cout<<kwadrat->val1<<endl;
cout<<kwadrat->val2<<endl;
cout<<kwadrat->val3<<endl;
return 0;
}
最佳答案
1.->
用于通过pointer
到object访问对象的成员变量和方法
Foo *foo = new Foo();
foo->member_var = 10;
foo->member_func();
2..
用于通过对象instance
Foo foo;
foo.member_var = 10;
foo.member_func();
3.::
用于访问 class/struct
或 namespace
的静态变量和方法。它还可以用于访问另一个作用域的变量和函数(实际上类、结构、命名空间在这种情况下都是作用域)
int some_val = Foo::static_var;
Foo::static_method();
int max_int = std::numeric_limits<int>::max();
关于c++ - c++中 "::" "."和 "->"有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11902791/