C++ 常对象做函数参数问题

func1(constPoint&p1)和func2(Point&p1)这两种函数参数写法的区别在哪里?对func1(constPoint&p1)调用时,实参用常对象做参... func1(const Point & p1)和func2(Point & p1)这两种函数参数写法的区别在哪里?对func1(const Point & p1)调用时,实参用常对象做参数和普通对象都可以吗?常对象不能访问非常成员函数,在func1中,p1是否能像普通对象一样访问各类非常成员函数? 对func(Point & p1)调用时只能用普通对象做实参?
class Point
{
public:
Point( int xx=0,int yy=0) { X=xx;Y=yy; cout<<"构造函数调用"<<endl;}
Point(Point &p) { X=p.X;Y=p.Y;cout<<"拷贝构造函数被调用"<<endl; }
//Point(const Point &p) {X=p;Y=p;cout<<"拷贝构造函数被调用"<<endl;}
private:
int X,Y;
};
Point(const Point &p)的函数也会被编译通过,常对象只是必须访问常成员函数,对成员变量的访问受常变量与非常变量的限制?
展开
 我来答
binglink
2012-04-19 · TA获得超过1101个赞
知道小有建树答主
回答量:639
采纳率:0%
帮助的人:462万
展开全部
func1(const Point & p1)和func2(Point & p1)这两种函数参数写法的区别在哪里?
答 : fun1保证实参在函数调用后不会被改变, 如果函数体内试图改变p1,编译器会报错.

对func1(const Point & p1)调用时,实参用常对象做参数和普通对象都可以吗?
答: 都可以

常对象不能访问非常成员函数,在func1中,p1是否能像普通对象一样访问各类非常成员函数?
答: 正常情况不能. 但可以用const_cast强制转换, 尽量不要用.

对func(Point & p1)调用时只能用普通对象做实参?
答: 是的.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式