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

标签 c++ operators field member

我创建了一个名为 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/

相关文章:

c++ - 加速文件 I/O : mmap() vs. read()

Haskell 中的函数应用

javascript - ExtJS 5 如何在模型中动态创建字段

c++ - 使用 boost asio 发送带外数据

c++ - 使用STL vector 复制构造函数与赋值运算符

ActionScript 日期比较

java - java中的x++和++x有区别吗?

bash - 对包含行分隔符的文件进行排序

bash - 使用 awk 将大型复杂的一列文件拆分为多列

c++ - 格式化具有相似返回值的顺序 if 语句 (C++)