形参是实参的引用

刚学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;

}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数的形参实参是函数调用过程中的两个概念。 形参是在函数定义时定义的参数,它是函数内部使用的占位符。形参可以在函数定义时指定,用于接收传递给函数的实际参数值。形参是函数定义的一部分,它的作用域仅限于函数内部,函数外部无法访问。 实参是在函数调用时实际传递给函数的参数值。实参可以是常量、变量、表达式或函数等。实参的值可以在函数调用时指定,在函数内部可以通过形参使用实参的数值。实参可以是任意类型的数据。 形参实参之间的关系是通过函数调用来建立的。当调用函数时,实参的值被传递给形参,形成一一对应关系。形参将使用实参的数值执行函数内部的操作。 形参实参之间的区别主要有以下几点: 1. 定义位置不同:形参是在函数定义时指定的参数,实参是在函数调用时传递的参数。 2. 作用范围不同:形参的作用范围仅限于函数内部,而实参的作用范围可以是函数内部和外部。 3. 类型限制不同:形参可以指定特定类型或不限制类型,而实参必须与形参的类型匹配。 4. 值传递方式不同:对于值类型的形参,默认情况下是按值传递的,即在函数调用时创建形参的副本;而对于引用类型的形参,默认情况下是按引用传递的,即实参形参指向同一个内存地址。 总之,形参是函数定义时声明的占位符,实参是函数调用时传递的具体数值。通过函数调用,实参的值被传递给形参,从而实现函数的功能。形参实参是函数输入和输出的桥梁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值