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)的函数也会被编译通过,常对象只是必须访问常成员函数,对成员变量的访问受常变量与非常变量的限制? 展开
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)的函数也会被编译通过,常对象只是必须访问常成员函数,对成员变量的访问受常变量与非常变量的限制? 展开
1个回答
展开全部
func1(const Point & p1)和func2(Point & p1)这两种函数参数写法的区别在哪里?
答 : fun1保证实参在函数调用后不会被改变, 如果函数体内试图改变p1,编译器会报错.
对func1(const Point & p1)调用时,实参用常对象做参数和普通对象都可以吗?
答: 都可以
常对象不能访问非常成员函数,在func1中,p1是否能像普通对象一样访问各类非常成员函数?
答: 正常情况不能. 但可以用const_cast强制转换, 尽量不要用.
对func(Point & p1)调用时只能用普通对象做实参?
答: 是的.
答 : fun1保证实参在函数调用后不会被改变, 如果函数体内试图改变p1,编译器会报错.
对func1(const Point & p1)调用时,实参用常对象做参数和普通对象都可以吗?
答: 都可以
常对象不能访问非常成员函数,在func1中,p1是否能像普通对象一样访问各类非常成员函数?
答: 正常情况不能. 但可以用const_cast强制转换, 尽量不要用.
对func(Point & p1)调用时只能用普通对象做实参?
答: 是的.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询