如何解决没有与参数列表匹配的构造函数

在c++学习中遇到的错误

stock(char a[], int q = 1000, double p = 8.98) : quan(q), price(p) {
        strcpy(stockcode, a);
    }

这是一个接受字符串参数的构造函数,但是在编译器中出现了没有与参数列表匹配的构造函数的错误提示

解决方式是在char前加const

stock(const char a[], int q = 1000, double p = 8.98) : quan(q), price(p) {
        strcpy(stockcode, a);
    }

第一个函数中,参数a是一个字符数组,它没有被声明为常量。这意味着调用该函数时可以修改a指向的字符串常量,这可能会导致未定义的行为而出现错误。因此,在实际编程中应该尽量避免使用这种方式。

第二个函数中,参数a声明为了常量指针,即const char * 类型。这意味着调用该函数时不能修改a指向的字符串常量,从而确保了程序的安全性和可靠性。因此,建议在函数参数中使用const char*形式来表示字符串常量。

你可能感兴趣的:(C++,c++,开发语言)