首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

定义多个默认构造函数有关问题

2012-05-24 
定义多个默认构造函数问题类C/C++ code#ifndef MATRIX_H_#define MATRIX_H_class MyMatrix{private:int ro

定义多个默认构造函数问题

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);这两个构造函数都满足调用条件,编译器不知道应该选择哪一个,故而告警。

热点排行