建设银行的官方网站纪念币,公司宣传页设计印刷,wordpress如何管理,主题设计师站C 运算符中不能重载的有#xff1a;1、条件运算符“?:”#xff1b;2、成员访问运算符“.”#xff1b;3、域运算符“::”#xff1b;4、长度运算符“sizeof”#xff1b;5、成员指针访问运算符“-*”和“.*” 。重载#xff1a;让操作符可以有新的语义#xff0c;… C 运算符中不能重载的有1、条件运算符“?:”2、成员访问运算符“.”3、域运算符“::”4、长度运算符“sizeof”5、成员指针访问运算符“-*”和“.*” 。重载让操作符可以有新的语义而不是更改语法否则会引起混乱。重载的部分规则运算函数的参数至少有一个必须是类的对象或者是类的对象的引用。而C 中不能重载的运算符有5个分别为“?:”条件运算符“.”成员访问运算符“::”域运算符“sizeof”长度运算符“-*”和“.*” 成员指针访问运算符那么这几个运算符为什么不能进行重载原因介绍1“?:”假设可以重载那么我们来看下列的代码exp1 ? exp2 : exp3该运算符的含义是执行exp2和exp3中的一个假设重载了就不可以保证执行一个还是两个还是都没执行该运算符的跳转性质就不复存在了。所以“?:”不能被重载。2“.”假设可以重载我们可以假设一种情况创建一个对象调用该对象的函数。class Y{public:void fun();};class X{public:Y* p;Y operator.(){return *p;}void fun();}void g(X x){x.fun();}这个例子中x.fun()就不知道是调用哪一个fun函数了。 “.”运算符的含义是引用对象成员然而被重载后就不能保证了导致运算符意义的混淆。3“::”该运算符只是在编译的时候域解析而没有运算参与。根据重载的规则如果重载该运算符就赋予了新的语义可能会出现混淆。4“sizeof”不能被重载的原因主要是内部许多指针都依赖sizeof。5“-*”和“.*”引用指向类成员的指针声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。