Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于C+中重载成员函数的问题+;? 我正在从地址中读取一些C++文本。 在第一行,他们说:_C++_Overloading - Fatal编程技术网

关于C+中重载成员函数的问题+;? 我正在从地址中读取一些C++文本。 在第一行,他们说:

关于C+中重载成员函数的问题+;? 我正在从地址中读取一些C++文本。 在第一行,他们说:,c++,overloading,C++,Overloading,成员函数的签名包括: 函数名 其参数的数据类型 参数和参数的顺序 可能 函数的常量状态。 我不明白他们所说的“函数的const status”是什么意思 有人能详细说明一下吗? 谢谢。他们的意思是总结函数必须不同的项,以便将其放入同一类范围。末尾的常量是: struct A { void f(); void f() const; }; 这些是有效的重载。如果在a上调用f,则调用第一个,如果在常量a上调用第二个,则使用第二个: A a; a.f(); // takes first

成员函数的签名包括:

  • 函数名

  • 其参数的数据类型

  • 参数和参数的顺序
    可能

  • 函数的常量状态。

我不明白他们所说的“函数的const status”是什么意思

有人能详细说明一下吗?
谢谢。

他们的意思是总结函数必须不同的项,以便将其放入同一类范围。末尾的
常量是:

struct A {
  void f();
  void f() const;
};
这些是有效的重载。如果在
a
上调用
f
,则调用第一个,如果在
常量a
上调用第二个,则使用第二个:

A a;
a.f(); // takes first

A const& b = a;
b.f(); // takes second

请注意,“签名”一词在这里被误用。函数的签名更广泛,还包括函数所属的类。签名唯一地标识一个函数。

它们的意思是对函数必须不同的项进行汇总,以便将其放入同一类范围。末尾的
常量是:

struct A {
  void f();
  void f() const;
};
这些是有效的重载。如果在
a
上调用
f
,则调用第一个,如果在
常量a
上调用第二个,则使用第二个:

A a;
a.f(); // takes first

A const& b = a;
b.f(); // takes second

请注意,“签名”一词在这里被误用。函数的签名更广泛,还包括函数所属的类。签名唯一地标识函数。

将成员函数声明为
const
会告诉编译器成员函数不会修改对象的数据,也不会调用其他非const的成员函数

编译器将检查以确保您确实没有修改数据。可以为常量或非常量对象调用常量成员函数,但不能为
const
对象调用非常量成员函数(因为它可以修改对象)


可以阅读更多关于C++中的常态性。

< P>声明一个成员函数为“代码> const ”告诉编译器成员函数不会修改对象的数据,不会调用其他不是const的成员函数。p> 编译器将检查以确保您确实没有修改数据。可以为常量或非常量对象调用常量成员函数,但不能为
const
对象调用非常量成员函数(因为它可以修改对象)


<> p> C++中的int MyClass,

,可以通过将关键字附加到它的签名中来声明类的成员函数为“代码> const < /C>”(例如,<代码>:DoMeOthin(int PARAM)const {}} /C++ >)。这样做可以保证函数不会更改调用该函数的类对象的(非
可变的
)成员,因此可以使用该类的
常量
实例调用它


允许一个类的两个不同成员函数,它们的签名仅在声明为“代码> const < />代码>时不同。

C++中,可以通过将关键字附加到其签名中来声明类的成员函数为“代码> const < /C>”(例如,<代码> int MyClass:DOOMEOTE(int PARAM)const。{…}
)。这样做可以保证函数不会更改调用该函数的类对象的(非
可变的
)成员,因此可以使用该类的
常量
实例调用它


允许一个类有两个不同的成员函数,其签名仅在声明是否为
const
时不同。

“不会更改(非可变)”?您的意思是“可变”?davka-否。您可以将类成员声明为
可变
(如
可变int m_foo;
),这意味着它可以被
const
函数修改。我知道。现在我知道你的意思是“不可变”而不是“不可变”。如果它是基于文本的背景颜色,很难得到确切的含义:)好的。在“他不懂
mutable
”和“他没有发现我没有写‘可变’。看起来我走错了方向!很高兴我们现在排序了。:)可能还值得注意的是,
volatile
限定符参与了成员函数重载。此外,它不是保证,而是承诺,承诺可能会被破坏。“不会更改(非可变)”?你的意思是?”可变“@davka-不。你可以将类成员声明为
mutable
(如
mutable int m_foo;
),这意味着它可以被
const
函数更改。现在我明白你的意思是“不可变”而不是“不可变”“。如果是基于文本的背景颜色,很难得到确切的含义:)好的。这是一个“他不懂<代码>可变的<代码>”和“他没有发现我没有写'可变的'”之间的折腾。”。看起来我走错了方向!很高兴我们现在排序了。:)可能还值得注意的是,
volatile
限定符参与了成员函数重载。此外,它不是保证,而是承诺,承诺可能会被打破。