扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
创新互联专业为企业提供合山网站建设、合山做网站、合山网站设计、合山网站制作等企业网站建设、网页设计与制作、合山企业网站模板建站服务,10余年合山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
麻栗坡ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
下列运算符不允许重载: . , .* , :: , ?:,siezof
基本都可以重载哦,反而不能重载的只有少数5个:成员运算符“.”、指针运算符“*”、作用域运算符“::”、“sizeof”、条件运算符“?:”。
很简单, 运算符 如+ - * / 等,两边的数据类型是可以变化的, 如1+1 对应的是 int型 1.0+1.0 对应的是float型 两个式子调用的程序是不一样的,但用的都是同一个运算符,这就是重载 你自己写的类也可以用到这些运算符, 只要重载你用到的运算符自己写算法就可以了
c/c++ 里大多数运算符都可以在 c++ 中被重载。c 的运算符中只有 .和 ?:(以及 sizeof,技术上可以看作一个运算符)不可以被重载。c++ 增加了一些自己的运算符,除了 :: 和 .* 外,大多数都可以被重载
大部分的操作符是可以被重载的,例外的只有“.”、“::”、“?:”和“sizeof”。没有什么非禁止operator?:重载的理由,只不过没有必要而已。另外,expr1?expr2:expr3的重载函数无法保证expr2和expr3中只有一个被执行。而“sizeof”无法被重载是因为不少内部操作,比如指针加法,都依赖于它,例如:X a[10];X* p = &a[3];X* q = &a[3];p++; // p points to a[4]// thus the integer value of p must be// sizeof(X) larger than the integer value of q这样,sizeof(X)无法在不违背基本语言规则的前提下表达什么新的语义。在N::m中,N和m都不是表达式,它们只是编译器“认识”的名字,“::”执行的实际操作是编译时的名字域解析,并没有表达式的运算牵涉在内。或许有人会觉得重载一个“x::y”(其中x是实际对象,而非名字域或类名)是一个好主意,但这样做引入了新的语法[译注:重载的本意是让操作符可以有新的语义,而不是更改语法——否则会引起混乱],我可不认为新语法带来的复杂性会给我们什么好处。原则上来说,“.”运算符是可以被重载的,就像“->”一样。不过,这会带来语义的混淆——我们到底是想和“.”后面的对象打交道呢,还是“.”后面的东东所实际指向的实体打交道呢?看看这个例子(它假设“.”重载是可以的):class Y public:void f();// ...};class X Y* p;Y& operator.() void f();// ...};void g(X& x)x.f(); // X::f or Y::f or error?}
?:条件运算符sizeof求字节运算符::作用域解析运算符.成员选择
大部分运算符都能重载,不能重载的运算符主要有:类属关系运算符“.”、成员指针运算符“*”、作用域分辨符“::”、sizeof和三目运算符“?:”、指数运算符“**”、还有“#”运算符。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流