65,211
社区成员
发帖
与我相关
我的任务
分享
template <typename object>
class mem{
public :
explicit mem(const object &initialvale = object()):storedvalue(initialvalue){}//这一句是什么意思?
const object &read() const{//这种函数的写法是什么意思 为什么要这么写? 我用普通的函数不能实现这个功能马?
似乎operater的写法也是这样的 能否详细解释一下 (书上很乱 )
return storedvalue;
}
};
尝试用多数人能懂的方式解释楼主的疑问!
template <typename object> 模板声明,object为一个任意的类型名称
const object &initialvale = object() 单看object(),直接把object想象成任意可能的类型,比如int,float
class或union、enum都行.如果是int 那就成了
const int& initialvale=int()
如果是自定义类类型:(比如test为楼主定义的类)那就成了
const test& initialvale=test() 这个test()自然就是调用test类的默认构造函数,产生一个类对象
:storedvalue(initialvalue) 这一部分无非就是初始化storedvalue,用参数列表中刚刚产生的对象
问题二:
const object &read() const 前面的const可以在一般的函数中出现,而后面的const是类成员函数专属
因此着重讲后面那个const,const本身就是一个限定符,后面那个const到底限定谁呢?既然是成员函数专属
那成员函数与普通函数最大的区别就是this指针,因此,后面的const限定的就是this指针所指。
由于普通函数没有this指针,也就不会有后面那个const存在的说法