形参是实参的引用
来源:互联网 发布:ubuntu下安装tar.gz 编辑:程序博客网 时间:2024/06/06 07:49
刚学C++遇到的问题:
重载运算符 输入流>>时, 函数定义的形参必须是实参的引用(别名)
虚函数重写,返回值的类型不能改变(如 int 型不能改为 void 型)
//两个整形数组做+,-,*,运算,参数必须是实参的引用,而且是const型,不然的话,不会报错,但是输出的数据和输入的数据不是一回事,我还没找到原因,也只知道有这么回事
friend MyArray* operator+(const MyArray& m1, const MyArray& m2);
friend MyArray* operator+(const MyArray& m1, const int& a);
friend MyArray* operator-(const MyArray& m1, const MyArray& m2);
friend long int operator*(const MyArray& m1, const MyArray& m2);
//编码17,运算符重载补充 MyArray2 内联函数方式
#include <iostream>
using namespace std;
class MyArray
{
public:
MyArray(int length)
{
m_length = length;
m_a = new int[length];
}
MyArray(int* a, int length)
{
m_length = length;
m_a = new int [length];
for (int i = 0; i < length; i++)
{
m_a[i] = a[i];
}
}
void display()
{
for (int i = 0; i < m_length; i++)
{
cout<<m_a[i]<<", ";
}
cout<<endl;
}
MyArray* operator+(const MyArray& m2);
MyArray* operator+(const int& a);
MyArray* operator-(const MyArray& m2);
long int operator*(const MyArray& m2);
private:
int* m_a;
int m_length;
};
MyArray* MyArray::operator+(const MyArray& m2)
{
MyArray* c = new MyArray(m_length); //初始化
for (int i = 0; i < m_length; i++)
{
c->m_a[i] = m_a[i] + m2.m_a[i];
}
return c;
}
MyArray* MyArray::operator+(const int& a)
{
MyArray* c = new MyArray(m_length);
for (int i = 0; i < m_length; i++)
{
c->m_a[i] = m_a[i] + a;
}
return c;
}
MyArray* MyArray::operator-(const MyArray& m2)
{
MyArray* c = new MyArray(m_length);
for (int i = 0; i < m_length; i++)
{
c->m_a[i] = m_a[i] - m2.m_a[i];
}
return c;
}
long int MyArray::operator*(const MyArray& m2)
{
long int sum = 0;
for (int i = 0; i < m_length; i++)
{
sum += m_a[i] * m2.m_a[i];
}
return sum;
}
int main()
{
int a[] = {4, 7, 8, 9, 10, 32};
MyArray m1(a, 6);
MyArray m2(a, 6);
MyArray* m3 = m1 + m2 * m2;
MyArray* m4 = m1 - m2;
long int r = m1 * m2;
m1.display();
m2.display();
m3->display();
m4->display();
cout<<"r = "<<r<<endl;
system("pause");
return 0;
}
- 形参是实参的引用
- [研究]引用实参的传递
- 模版实参的推断和引用
- 引用类型实参和非引用类型实参对于字符串可能存在的问题
- 引用传实参
- 用形参为引用的形式实现实参的交换
- 形参、实参以及值调用和引用调用的区别
- 实现两个变量的值互换,用“引用”做实参
- 传递给const引用形参的实参要求
- 数组的形参与实参,通过引用传递数组
- c++构造函数盲目拷贝期待引用类型的实参
- 关于引用数据类型的形参与实参讨论
- 模板实参推断与引用
- java中最经典的实参和形参及引用值的改变
- 关于C的指针,Java/Python的引用,形参与实参个人理解
- 一个以引用作为参数的函数无法接收一个常量作为实参
- 在给函数传递实参时,不能对用到引用的传NULL
- 深刻理解Java中形参与实参,引用与对象的关系
- TensorFlow 记录
- 97. Interleaving String
- 42. Trapping Rain Water
- C++ socket发送POST请求
- 小白的jsp学习笔记二
- 形参是实参的引用
- centos gnome 取消屏幕保护自动锁屏功能
- XML学习07-Schema约束
- 挂号系统(android)之初诊和复诊信息录入
- Android购物车
- SFTP中创建文件目录,上传文件(*)
- Go编写计数排序
- 【JVM】3_总结String和intern方法
- Eclipse配置SVN