aihot  2020-11-12 09:25:11  OpenCV |   查看评论   
1 void fun( const int* p) 2 { 3 *p = 42; // error 4 int var = 10; 5 p = &var; // 可以改变p本身的值 6 } 7 void fun(const int& p) 8 { 9 p = 42; // error,p是一个指向const对象的引用 10 }

有的时候,我们需要函数的返回值是一个const对象,比如我们考虑一个有理数据类,我们给类定义了一个*的重载。

1 class Rational{ 2 // ....
3 }; 4 const Rational operator* (const Rational& lhs, const Rational& rhs); 5 Rational a, b, c; 6 a*b = c; // Error,因为左端为一个const对象

如果上面代码中重载操作符返回对象不是const类型,则a*b=c这个式子就成立,实际上这与我们的内置类型的算术运算原则违背了,而我们希望我们设计的类的操作意义要像内置内类一样。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自C++的那些事:const用法面面观

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]