操作员过载()

Operator overload ()

本文关键字:操作员      更新时间:2023-10-16

为什么这个结果是3?我并不低估"Class1():a(3)"的含义。

class Class1
{
private:
    int a;
public:
    Class1() :a(3)
    {       
    };
    Class1(int f) 
    {
        a = (int)f;
    };
};

这是主

int main(void)
    {
        Class1 c11;
        c11.print();
    }

"我并不低估Class1() :a(3)的含义。"

它被称为成员初始化器列表,并使用值3初始化类成员变量a

另请参阅构造函数中这个奇怪的冒号成员(":")语法是什么?

Class1()是一个构造函数。

构造函数是在创建对象时初始化类成员值的函数。这里,当您使用Class1c11时,会调用构造函数,并且值c11.a初始化为3。

Class1():a(3)表示构造函数正在将a初始化为3。

要了解更多关于构造函数的信息,请访问以下链接

http://www.tutorialspoint.com/cplusplus/cpp_constructor_destructor.htm

http://www.cprogramming.com/tutorial/constructor_destructor_ordering.html

这是一个"成员初始值设定项列表"。成员变量int a简单地用值3初始化。在构造函数中将值分配给a将是赋值

初始化器列表初始化成员变量(通过自己或父类的构造函数)。如果某个成员变量不包含在列表中,则它被默认初始化,即调用它们的默认构造函数,对于类型为int的成员变量,这是一个值为0的初始化。

结论:

初始化构造函数中的成员变量,首先调用默认构造函数,然后将特定值分配给成员。