C++编程中,组合类的问题。Point类与Line类的组合,在main函数中定义对象,当构造函数被调用时,输出语句
C++编程中,组合类的问题。Point类与Line类的组合,在main函数中定义对象,当构造函数被调用时,输出语句。编译器不报错,但是,有条语句没有被执行,求教为什么。具...
C++编程中,组合类的问题。Point类与Line类的组合,在main函数中定义对象,当构造函数被调用时,输出语句。编译器不报错,但是,有条语句没有被执行,求教为什么。
具体程序如下:
//test.h
#include <iostream>
using namespace std;
class Point
{
private:
double m_x;
double m_y;
public:
Point()
{
cout << "空的Point构造函数被调用" << endl;
}
Point(int x,int y);
double getX()
{
return m_x;
}
double getY()
{
return m_y;
}
};
class Line
{
private:
Point m_p1;
Point m_p2;
public:
Line()
{
cout << "空的Line构造函数被调用" << endl;
}
Line(Point a, Point b);
};
//test.cpp
#include "test.h"
Point::Point(int x, int y)
:m_x(x),m_y(y)
{
cout << "非空Point构造函数被调用" << endl;
}
Line::Line(Point a, Point b)
:m_p1(a),m_p2(b)
{
cout << "非空Line构造函数被调用" << endl;
}
void main()
{
// Point M;
// Point N;
Point m(1,2);
Point n(2,3);
Line L0;
Line L1(Point M,Point N);
// Line L2(Point m,Point n);
}
main函数中的
Line L1(Point M,Point N);没有被执行,但是VS2005和VC6.0都不报错,问为什么,求指教~~~ 展开
具体程序如下:
//test.h
#include <iostream>
using namespace std;
class Point
{
private:
double m_x;
double m_y;
public:
Point()
{
cout << "空的Point构造函数被调用" << endl;
}
Point(int x,int y);
double getX()
{
return m_x;
}
double getY()
{
return m_y;
}
};
class Line
{
private:
Point m_p1;
Point m_p2;
public:
Line()
{
cout << "空的Line构造函数被调用" << endl;
}
Line(Point a, Point b);
};
//test.cpp
#include "test.h"
Point::Point(int x, int y)
:m_x(x),m_y(y)
{
cout << "非空Point构造函数被调用" << endl;
}
Line::Line(Point a, Point b)
:m_p1(a),m_p2(b)
{
cout << "非空Line构造函数被调用" << endl;
}
void main()
{
// Point M;
// Point N;
Point m(1,2);
Point n(2,3);
Line L0;
Line L1(Point M,Point N);
// Line L2(Point m,Point n);
}
main函数中的
Line L1(Point M,Point N);没有被执行,但是VS2005和VC6.0都不报错,问为什么,求指教~~~ 展开
展开全部
把最后那行改成
Line L1(Point(),Point());
就可以了,函数的参数列表里是不能声明变量的,可以直接传递匿名对象(注意对象后的括号,就算没参数也要加括号)
如果要传递带参数的Point可以这样
Line L1(Point(1,2), Point(3,4));
至于为什么不报错,我也不清楚了
Line L1(Point(),Point());
就可以了,函数的参数列表里是不能声明变量的,可以直接传递匿名对象(注意对象后的括号,就算没参数也要加括号)
如果要传递带参数的Point可以这样
Line L1(Point(1,2), Point(3,4));
至于为什么不报错,我也不清楚了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Line L1(Point M,Point N);
不可能不报错,M和N都被你注释掉了
不可能不报错,M和N都被你注释掉了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询