赞
踩
刚听到const成员函数时,以为如同const成员变量一样的写法:const 类型名 函数名(参数);
。
但其实,是:类型名 函数名(参数) const;
这个const
实际修饰的是被隐藏的this
指针常量。
class Date { public: Date(int _year = 0, int _month = 0, int _day = 0) { this->_year = _year; this->_month = _month; this->_day = _day; } void show1() const // const成员函数 { cout << this->_year << '-' << this->_month << ' ' << this->_day << endl; } void show2() // 非const成员函数 { cout << this->_year << '-' << this->_month << ' ' << this->_day << endl; } private: int _year; int _month; int _day; };
答案:不可以。
这样做,我们相当于在传参时放大了权限。
答案:可以。
这样做,我们相当于在传参时缩小了权限。
成员函数加const是好的,建议能加const都加上。这样普通对象和const对象都可以调用了。但是如果要修改成员变量,成员函数不能加const。
class Date { public : Date* operator&() { return this ; } const Date* operator&()const { return this ; } private : int _year ; int _month ; int _day ; };
这两个默认成员函数一般不用重新定义 ,编译器默认会生成。
这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载,比如想让别人获取到指定的内容!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。