构造函数可以只有部分参数为默认参数吗

构造函数可以只有部参数为默认参数吗

//类中的函数声明
student(string name, int age = 3);

//类外的定义
student::student(string  name, int age = 3)
{
    m_name = name;
    m_age = age;
}
//主函数中的调用
student b("张三");

​

调用时报错了,说找不到这样的重载

我尝试了普通函数,当只有部分参数为默认参数时是可以的
#include
using namespace std;
#include
int main()
{
    void func(string a, int b = 2);
    func("asdf");

    return 0;
}
void func(string a, int b = 2)
{
    cout << a << " " << b;
}


img

student::student(string name, int age) 函数实现时,不要写默认值,只有声明时写默认值。