使用 const 参数的 C++ 函数重载

问题描述 投票:0回答:1
class CheckConst
{
public:

    void func(int* p)
    {
        cout << "func called";
    }

    void func(const int* p)
    {
        cout << "const func called";
    }
};

int main()
{
    int* p = new int(5);
    CheckConst obj;
    obj.func(p);
}

上述函数重载工作正常。但为什么编译器没有抱怨,这两个函数重载对于 obj.func(p) 的函数调用都是有效的。如果我从类中删除任一函数,代码仍然有效。

编译器如何区分调用哪一个?

c++ constants
1个回答
-1
投票

尝试此代码来解决运行时的错误

您可以使用 std::cout 在 C++ 中打印文本。

#include<stdio.h>
#include <iostream>
class CheckConst
{
public:

    void func(int* p)
    {
        std::cout << "func called";
    }

    void func(const int* p)
    {
        std::cout << "const func called";
    }
};

int main()
{
    int* p = new int(5);
    CheckConst obj;
    obj.func(p);
}

© www.soinside.com 2019 - 2024. All rights reserved.