"有什么区别-6ren"> "有什么区别-这个问题在这里已经有了答案: When do I use a dot, arrow, or double colon to refer to members of a class in C++? (4-6ren">
gpt4 book ai didi

c++ - c++中 "::" "."和 "->"有什么区别

转载 作者:IT老高 更新时间:2023-10-28 12:06:21 25 4
gpt4 key购买 nike

我创建了一个名为 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/structnamespace 的静态变量和方法。它还可以用于访问另一个作用域的变量和函数(实际上类、结构、命名空间在这种情况下都是作用域)

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com