const A & fun(const B &b) const {return …;};中的三个const含义是什么?renturn的返回值是什么

作者&投稿:邢园 (若有异议请与网页底部的电邮联系)
int getValue()const{ return n:}是什么意思?~

..就是返回N的值,加
const 是不能改变函数体力的内容

区别就大了。
const int fun(int b); 表示的是返回的是const型的数据
int fun(int b) const; 表示的是函数是const型的,也就是他内部不会改变任何类的成员变量。

第一个const的意思是:对返回值A不能修改,因为你的返回值A是返回的一个引用值,所以是可以做为左值使用的,因此此处用const来限定返回的变量A不可以修改。
(注:这种既返回引用,又用const来限定不可修改的目的:返回一个比较大的数据结构,使用引用可减少数据传递过程中的开销;但又要防止这数据被修改,所以又使用const来限定。这种使用看似矛盾,但其实是使用的很妙。)

第二个const表示,传入的参数B本身不可以修改。因为这里的参数传递也是使用引用调用,所以有必要用const来限定。

第三个const表示,这个函数的性质是一个const类型的函数。在它的运算的整个过程中,不会对传入的数据(包括直接调用的全局变量)进行修改;如果有试图修改的操作,在程序编译的时候会报错。

第一个const没有实际意义,表示返回的值是个常量
第二个const表示b是个常量,在函数体里面不能更改b的值
第三个const表示这个成员函数所属的类的this指针是个常量


大理市15056717127: 类中的这两个成员函数: const int fun(){} 和 int fun() const{} 一样吗?不一样的话区别在哪里? -
龙狭尿激: const int fun(){} 表示函数不能为左值.必须用一个变量来接收他得返回 例如:int a = const int fun();//正确 const int fun();//直接调用会报错 int fun() const{}这个表示类中的const成员也能调用这个函数.

大理市15056717127: 总结C++中const的用法 -
龙狭尿激: const有两种用法:class A { public: void fun1()const; void fun2(const int& arg); private: int m_arg; static int m_static; } 先看第一种用法,这个const关键词表示在该成员函数中不可以对该类的数据成员m_arg进行修改.这就是const成员函数的意义...

大理市15056717127: 某个类的const类型的对象能调用的该类的非const类型的成员函数是什么? -
龙狭尿激: 例如:const C x; //const类型的对象x x.fun(); //调用的该类的非const类型的成员函数(假设fun是非const类型的成员函数)

大理市15056717127: 临时变量和局部变量的区别是什么? -
龙狭尿激: 没有名字的对象就是临时对象,它存在于完整的表达式的生存其间.也就是说,当表达式计算结束后就会被释放.一个例外是,当临时对象被引用时,它的生存期将延长到与这个引用的生存期一样长. 局部对象就是可见区域在一个函数范围的...

大理市15056717127: 23关键字const有什么含义? -
龙狭尿激: 调用鼠标的函数.

大理市15056717127: 说出const型成员函数能不能调用非const成员函数. -
龙狭尿激: 第一种情况:const对象调用非const成员函数view plaincopy to clipboardprint? class A { public:A(int N = 0);void Fun(); private:int n; }; A::A(int N):n(N) { } void A::Fun() {cout << n << endl; } int _tmain(int argc, _TCHAR* argv[]) {A a;a.Fun(); ...

大理市15056717127: 关于C++的一个小问题.请各位帮忙. -
龙狭尿激: 是mutable关键字的作用 一个对象被声明成const后其所有的成员都是const,但是要设置一个特殊的成员为例外的话就要用mutable关键字!C++基本功:全面掌握const、volatile和mutable关键字 C++程式设计过程中,const的使用可以频度是非常...

大理市15056717127: C++编程中一个类的两个对象之间如何相互调用,最好举一个列子,谢了 -
龙狭尿激: 直接调用就可以了:class A { public:void getaAndb(char * a, char * b){strcpy(a, m_a);strcpy(b, m_b);}; char m_a[10]; char m_b[10]; } void main() { A aa; char a[10]; char b[10]; aa.getaAndb(a, b); }

大理市15056717127: C++中引用返回和标准返回的区别? -
龙狭尿激: 举个例子: int &f(int &x) {return x; }int main() {int a = 10;int b = f(a); return 0; }所谓引用传递就是不复制内存,把自己传递给对方,标准传递就是把自己的复制品传递给对方.程序首先定义变量a(这里理解成占用一块4字节大小的内存,把...

大理市15056717127: 1.编写函数实现计算一元二次方程的两个实根,然后编写主函数调用此函数. -
龙狭尿激: #include #include using namespace std;void fun(const double &A,const double &B,const double &C) {double t1,t2,y1,y2;if(A==0){cout< }else{t1=B*B-4*A*C;t2=-B/(2*A);if(t1==0){cout< cout<}elseif(t1>0){cout< y1=t2+...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网