关于构造函数:在C ++中::的含义是什么?

What is the meaning of :: in C++?

本问题已经有最佳答案,请猛点这里访问。

我正在学习C++,因为在我的学校,我把它作为一门学科,我的教授做了这段代码,我有一个问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class binario{

public:
    int n;

    binario(); // constructor sin parametros
    binario(int); //Constructor con parametro

    void estado(); //funcion
    long int convierte(); //funcion
    long int complementouno(); //funcion
};
binario::binario(){ //binario clase :: binario constructor sin parametro
    n=0; //inicialia n = 0
};

binario::binario(int n){ //binario clase :: binario (int n) constructor con parametro
    **binario::n=n;**  
};

binario::n=n是什么意思?谢谢,我希望我能得到一些帮助,我的教授还不够。


::用于访问类/结构或命名空间的静态变量和方法。它还可以用于从另一个作用域访问变量和函数(在这种情况下,类、结构、名称空间都是作用域)

所以,您使用它来访问n变量。


这段代码不是一个好例子。这可能更好:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class binario{

    public:
    // If you are are using C++11 (or higher):
    // int n = 0;
    int n;

    binario();
    binario(int);

    void estado();
    long int convierte();
    long int complementouno();
};

binario::binario()
// If you are are not using C++11 (or higher). Otherwise omit this and use
// above initialization.
: n(0)
{};

binario::binario(int n)
// Prefer class member initializer lists. Here the first 'n' is the member
// and the second 'n' the argument. Although, you might consider different
// names, to avoid confusion.
: n(n)
{};

如其他人所述,您可以在函数(构造器)体中使用this->nbinario::n(请选择this->n),以区分"binario::n"和外部"n";

请注意:我删除了所有无用的评论,并添加了一些其他评论(评论只是为了评论是一个坏习惯)。


它将类内的n的值设置为构造时作为参数给定的n的值。由于两者具有相同的名称,因此需要进行一些区分。

最好写:

1
2
3
binario::binario(int n) {
    this->n = n;  
}

或者使用不同的名称:

1
2
3
binario::binario(int a_number) {
    n = a_number;
}

注意:this是指向对象的指针,可以用来访问对象中的所有成员,可以在类的任何函数中使用this

编辑:(从注释中添加)您可以使用binario::nthis->n明确地引用类内的int n。这是必需的,因为参数名和数据成员都具有相同的名称:n。在第二个示例中,参数的名称不同,即a_number,很明显,n指的是数据成员而不是参数。