error: no matching function for call to `aaa::aaa()为什么加了构造函数就会出错

#include<iostream>

using namespace std;

class aaa

{

public:

void zh(int num,double gra);

aaa(int num,double gra):number(num),grade(gra){}

private:

int number;

double grade;

};

void aaa::zh(int num,double gra)

{

char nam='a';

num=nam;

gra=nam;

cout<<nam<<num<<gra<<endl;

}

int main()

{

aaa a1;

a1.zh(001,90);

return 0;

}


不凡的蚂蚁
浏览 3400回答 1
1回答

朕日理万机

只有你没有定义构造函数,编译器才会提供默认构造函数aaa()。现在因为你自己定义了构造函数aaa(int num,double gra),所以不再会有默认构造函数了。现在唯一的构造函数需要提供一个int和一个double,所以运行到aaa a1就报错了,因为你没有传递任何参数,就会去找那个不用参数的构造函数,结果没找到。你可以改成aaa a1(1, 3.14);或者提供不需要参数的构造函数,或者让你现有的这个构造函数有默认参数。
打开App,查看更多内容
随时随地看视频慕课网APP