C++编程中,组合类的问题。Point类与Line类的组合,在main函数中定义对象,当构造函数被调用时,输出语句

2025-02-26 04:46:12
推荐回答(3个)
回答1:

Line L1(Point M,Point N);
这种形式,VS2008中,编译器会给出警告C4930:未调用原型函数。
编译器理解为这是在main内部声明了一个函数。
这也是为什么VS2005和VS6.0不执行的原因。因为是函数原型声明,当然不会执行。

正确调用方法是,参数不要再写类型了
Line L1(m, n); // 这样编译器就知道,你是声明了Line的实例变量

回答2:

把最后那行改成
Line L1(Point(),Point());
就可以了,函数的参数列表里是不能声明变量的,可以直接传递匿名对象(注意对象后的括号,就算没参数也要加括号)
如果要传递带参数的Point可以这样
Line L1(Point(1,2), Point(3,4));

至于为什么不报错,我也不清楚了

回答3:

Line L1(Point M,Point N);

不可能不报错,M和N都被你注释掉了