回 帖 发 新 帖 刷新版面

主题:[讨论]帮忙解答   赢高分

class Point
{
    int x_,y_;
     public:
      Point():x_(0),y_(0){}
      Point(int x,int y=0):x_(x),y_(y){}
};
若执行语句
Point a(2),b[3],*c[4];
则Point类的构造函数被调用的次数是:_______


我想知道具体一点    请各位不吝赐教   本人感激不尽

回复列表 (共3个回复)

沙发


构造函数被调用了四次。其中:

第一次是声明对象a(2),调用带默参的Point(int x, int y=0):x_(x),y_(y){}

第二到第四次是声明对象数组b[3]时调用了不带默参得构造函数Point():x_(0), y(0){}

最后声明得对象指针数组c[4]时,不会调用构造函数的。

你可以自己动手改写代码,方便观察构造函数调用的情况,如:

class Point
{
    int x_,y_;

public:
    Point():x_(0),y_(0)
    {
        cout<<"Point() called..."<<endl;
    }
    Point(int x,int y=0):x_(x),y_(y)
    {
        cout<<"Point(int, int) called..."<<endl;
    }
};

这样你就可以清楚的看到程序运行时构造函数的调用情况了。

希望能帮到你,谢谢!

板凳


看了你的解答   颇有感悟   谢谢

3 楼


呵呵~一起学习[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册