const-关于c++中的重载函数调用

问题描述

关于c++中的重载函数调用

如果一个非const对象调用重载函数,而重载函数均为const该如何调用。
如果一个const对象调用重载函数,而重载函数均为非const又该嗯么样呢?

解决方案

const对象调用const函数,非const对象调用非const函数
const对象指针调用const函数,非const对象指针调用非const函数
如果const对象/指针 调用非const函数的话,编译就会报错了。
而相反,非const对象/指针是可以调用const函数的

解决方案二:

const对象只能调用const方法,非const的对象既可以调用const函数,也可以调用非const哈数

解决方案三:

简单粗暴,const对象已被限定资格,重载函数不能是非const,就是说他只能沿袭,就像一只犬,从它衍生的后代不可能是狼;而非const对象调用重载
函数却相对自由,从它衍生的可以沿袭也可能变弱;就像一匹狼,可能杂交产生相对弱一点的const对象,也可能重载出沿袭本性的非const对象。。。。
2333333举个例子,好像不是很好记,但是希望对楼主记忆有所帮助。

解决方案四:

const对象只能调用const方法,非const的对象既可以调用const函数,也可以调用非const哈数

时间: 2024-10-31 12:23:42

const-关于c++中的重载函数调用的相关文章

C++中操作符重载的const与默认构造函数

问题描述 C++中操作符重载的const与默认构造函数 原代码 class TestOverloadLessThan { public: TestOverloadLessThan( int m ) : m_int(m){}; int getInt(){ return m_int;}; bool operator<( const TestOverloadLessThan& t) const { return ( this->getInt() < t.getInt() ); }; p

代码-Java的重写和重载函数调用的问题

问题描述 Java的重写和重载函数调用的问题 代码一: class A { public String show(D obj){ return ("A and D"); } public String show(A obj){ return ("A and A"); } } class B extends A{ public String show(B obj){ return ("B and B"); } public String show(

hashtable-关于C++中运算符重载的问题

问题描述 关于C++中运算符重载的问题 template HashTable&HashTable::Insert(const E&e) { //散列表插入 K k=e; //抽取key值 int b=hSearch(k); //检查是否能完成插入 if(empty[b]) { empty[b]=false; ht[b]=e; return *this; } 散列表中的插入操作,要往Insert()中传的e是string类型的,然后下面的K k=e中的K是int,想要把"=&quo

os-c++中运算符重载 这个小程序怎么不对呢

问题描述 c++中运算符重载 这个小程序怎么不对呢 #include using namespace std; class R{ public : int n; int d; R(int a,int b) { this->n=a; this->d=b; } }; ostream operator<< (ostream &os,R &r) { // os<<r.n<<endl; // os<<r.d<<endl;; os

第8周-任务1-方案2-复数类中运算符重载(非成员函数实现)

接:第8周-任务1-方案1-复数类中运算符重载(成员函数实现) 本文用方案二求解:用类的友元函数,而不是成员函数,完成上面提及的运算符的重载: [讲解视频] [参考解答] #include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} friend Complex operator+(Comp

c++-C++中运算符重载问题~~~~~

问题描述 C++中运算符重载问题~~~~~ 解决方案 参考这个:http://www.360doc.com/content/10/0828/10/352319_49373706.shtml 解决方案二: http://wuyuans.com/2012/09/cpp-operator-overload/http://blog.csdn.net/dingyuanpu/article/details/5852825 如需要具体代码,请采纳本回答. 解决方案三: #include #include st

第8周-任务1-方案3-复数类中运算符重载(与实数运算)

接:第8周-任务1-方案2-复数类中运算符重载(非成员函数实现) 本文在方案2的基础上,扩展+.-.*./运算符的功能,使之能与double型数据进行运算.设Complex c; double d; c?d和d?c的结果为"将d视为实部为d的复数同c运算"的结果(其中?为+.-.*./之一).另外,再定义一目运算符 -,-c相当于0-c. [讲解视频] [参考解答] 在下面的解答中,我将所有二目运算符的重载定义为友元函数,一目运算符重载为成员函数,这是惯用的做法. #include &

C++中构造函数重载

  这篇文章主要介绍了C++中构造函数重载的相关资料,十分的详细,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include<stdio.h> class Test { private: int i; int j; int k; public: Test() { i=j=k=0; } Test(int v) { i=j=

解析C++中不能重载为友元函数的四个运算符

以下是对C++中不能重载为友元函数的四个运算符进行了详细的分析介绍,需要的朋友可以过来参考下   C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢? 现在先说说赋值运算符"="的重载 C++规定赋值运算符"="只能重载为类的非静态成员函数,而不可以重载为类的友元函数. 不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员.而赋值运算符