定义多个默认构造函数问题
类
- C/C++ code
#ifndef MATRIX_H_#define MATRIX_H_class MyMatrix{private: int row; int lin; int** pm; void init();public: MyMatrix(); MyMatrix(int r=0,int l=0);函数定义
- C/C++ code
MyMatrix::MyMatrix(){ row=lin=0;}MyMatrix::MyMatrix(int r,int l){ row=r; lin=l; init();}使用:
- C/C++ code
MyMatrix A; MyMatrix B(3,4);
有一个警告 定义多个默认构造函数
一个错误:对重载函数的调用不明确
为什么?初学C++,照着Primer Plus一段程序做的。同样是两个构造函数,为什么我的错了
[解决办法]
不能这么弄 要不然你使用无参数构造函数的时候 鬼晓得你要用哪一个啊 是本来就无参数的 还是采用默认参数的?
[解决办法]
因为你后面一个带参数的构造函数里的参数都是默认参数,调用时可有可无,所以编译器就有歧义了!
[解决办法]
错误的原因是MyMatrix A;这句造成的。因为MyMatrix();和 MyMatrix(int r=0,int l=0);这两个构造函数都满足调用条件,编译器不知道应该选择哪一个,故而告警。