gpt4 book ai didi

C++:为什么成员函数优先于全局函数

转载 作者:可可西里 更新时间:2023-11-01 17:04:04 26 4
gpt4 key购买 nike

为什么在下一个程序中,成员函数 foo 的优先级高于全局 foo,尽管全局 foo 匹配类型?

#include <iostream>
using namespace std;

void foo(double val) { cout << "double\n";}

class obj {
public:
void callFoo() { foo(6.4); }
private:
void foo(int val) {cout << "class member foo\n"; }
};

int main() {
obj o;
o.callFoo();
}

最佳答案

考虑一下如果在代码库中声明某处 的全局函数(可能有多个#include 语句)胜过class obj 会发生什么> 声明的成员函数就在类本身中...

这意味着,如果您想安全行事,就必须完全限定对成员函数的每次调用...

this->foo();

...而不是必须限定实际引用全局函数的不太可能的情况。

::foo();

这被称为“最小意外的概念”。

关于C++:为什么成员函数优先于全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25862633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com