关于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
- 函数名
- 其参数的数据类型
- 参数和参数的顺序
可能 - 函数的常量状态。
谢谢。他们的意思是总结函数必须不同的项,以便将其放入同一类范围。末尾的
常量是:
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
限定符参与了成员函数重载。此外,它不是保证,而是承诺,承诺可能会被打破。