为了账号安全,请及时绑定邮箱和手机立即绑定

这样写不可以嘛?奇怪了

#include <iostream>

using namespace std;

class Coordinate

{

    

public:

 Coordinate(int x1,int y1)

 {

        m_iX=x1;

        m_iY=y1;

 }

 // 打印坐标的函数

 void printInfo()  

 {

     cout<<"("<<m_iX<<","<<m_iY<<")"<<endl;

 }

public:

 int m_iX;

 int m_iY;

};

int main(void)

{

 //定义对象数组

    

    Coordinate coorArr[2];

    coorArr[0].Coordinate(1,2);

    coorArr[1].Coordinate(3,4);

 //遍历数组,打印对象信息

 for(int i = 0; i < 2; i++)

 {

  coorArr[i].printInfo();

 } 

 return 0;

}

正在回答

2 回答

你的Coordinate类没有定义默认构造函数,且因为你已经定义了一个构造函数,故编译器也不会为你自动生成一个默认构造函数。

可是在main函数中,第49行处你定义了一个Coordinate数组,这会对每一个元素进行初始化,由于没有默认构造函数,所以没有匹配的调用,编译失败。

再有,假设你提供了默认构造函数,那么第51和53行就错误了,因为不能对已经初始化的对象再次调用构造函数。

5 回复 有任何疑惑可以回复我~
#1

穿着拖鞋流浪 提问者

非常感谢!明白了
2015-08-10 回复 有任何疑惑可以回复我~

构造函数是不可以被用户进行调用的,你这里的错误是不是显示调用了构造函数

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

这样写不可以嘛?奇怪了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信