面向对象的程序设计学习笔记-15-函数的传值和传地址
来源:互联网 发布:淘宝闺蜜投诉入口在哪 编辑:程序博客网 时间:2024/05/17 23:42
/*
对象指针和对象引用的应用.
函数传值调用和传地址的调用*/
#include<iostream>
using namespace std;
class m
{
int x,y;
public:
m(){x=0,y=0;};
m(int i,int j){x=i,y=j;};
void copy(m *pm);//使用指针
void copy(m &pm);//使用引用
void setxy(int i,int j);
void print(){cout<<"x:"<<x<<",y="<<y<<endl;}
};
void m::copy(m *pm)
{
x=pm->x;y=pm->y;//实现成员函数的复制
}
void m::copy(m &pm)
{
x=pm.x;y=pm.y;
}
void m::setxy(int i,int j)
{
x=i;y=j;
}
void fun(m *m1,m & m2)//形参m1,m2是传地址
{
m1->setxy(1,2);
m2.setxy(3,4);
};
void fun(m m1,m *m2)//形参m1是传值,m2是传地址
{
m1.setxy(5,6);
m2->setxy(7,8);
};
void fun(m m1,m &m2)//形参m1是传值,m2是传地址
{
m1.setxy(9,10);
m2.setxy(11,12);
};
void main()
{
m m1(5,7),m2;
m2.copy(&m1);//传地址,使得m2=m1
m2.print();
m1.setxy(1,1);
m2.copy(m1);//使用引用来调用函数
m2.print();
/*由于没有返回值,且m1传的是值,并不改变实参的数值。
实参m1传递给形参m1,并不会影响实参的数值。*/
m1.setxy(10,50);m2.setxy(20,50);
fun(&m1,m2);//调用void fun(m *m1,m & m2)
m1.print();//结果应该为m1(1,2),m2(3,4)
m2.print();
m1.setxy(10,50);m2.setxy(20,50);
fun(m1,&m2);//void fun(m m1,m *m2)
m1.print();//m1传值,而m2传地址,所以结果是m1为(10,50)m2为(7,8)
m2.print();
m1.setxy(10,50);m2.setxy(20,50);
fun(m1,m2);//调用的是void fun(m m1,m &m2),所以结果应该是m1为(10,50)m2为(11,12)
m1.print();
m2.print();
}
对象指针和对象引用的应用.
函数传值调用和传地址的调用*/
#include<iostream>
using namespace std;
class m
{
int x,y;
public:
m(){x=0,y=0;};
m(int i,int j){x=i,y=j;};
void copy(m *pm);//使用指针
void copy(m &pm);//使用引用
void setxy(int i,int j);
void print(){cout<<"x:"<<x<<",y="<<y<<endl;}
};
void m::copy(m *pm)
{
x=pm->x;y=pm->y;//实现成员函数的复制
}
void m::copy(m &pm)
{
x=pm.x;y=pm.y;
}
void m::setxy(int i,int j)
{
x=i;y=j;
}
void fun(m *m1,m & m2)//形参m1,m2是传地址
{
m1->setxy(1,2);
m2.setxy(3,4);
};
void fun(m m1,m *m2)//形参m1是传值,m2是传地址
{
m1.setxy(5,6);
m2->setxy(7,8);
};
void fun(m m1,m &m2)//形参m1是传值,m2是传地址
{
m1.setxy(9,10);
m2.setxy(11,12);
};
void main()
{
m m1(5,7),m2;
m2.copy(&m1);//传地址,使得m2=m1
m2.print();
m1.setxy(1,1);
m2.copy(m1);//使用引用来调用函数
m2.print();
/*由于没有返回值,且m1传的是值,并不改变实参的数值。
实参m1传递给形参m1,并不会影响实参的数值。*/
m1.setxy(10,50);m2.setxy(20,50);
fun(&m1,m2);//调用void fun(m *m1,m & m2)
m1.print();//结果应该为m1(1,2),m2(3,4)
m2.print();
m1.setxy(10,50);m2.setxy(20,50);
fun(m1,&m2);//void fun(m m1,m *m2)
m1.print();//m1传值,而m2传地址,所以结果是m1为(10,50)m2为(7,8)
m2.print();
m1.setxy(10,50);m2.setxy(20,50);
fun(m1,m2);//调用的是void fun(m m1,m &m2),所以结果应该是m1为(10,50)m2为(11,12)
m1.print();
m2.print();
}
- 面向对象的程序设计学习笔记-15-函数的传值和传地址
- 面向对象的程序设计-学习笔记-23-派生类的构造函数和析构函数
- 面向对象的程序设计学习笔记-默认的构造函数
- 面向对象的程序设计学习笔记-构造函数和析构函数
- 面向对象的程序设计学习笔记-2
- 【学习笔记】面向对象的程序设计
- [笔记]面向对象的程序设计
- 面向对象的程序设计-学习笔记-20-常量对象
- 面向对象的程序设计学习笔记-19-静态成员函数的使用
- 面向对象的程序设计-学习笔记-28-虚函数的使用(实例补充)
- 面向对象的程序设计学习笔记-21-常量数据成员的定义和初始化
- php学习笔记 PHP面向对象的程序设计
- C++学习笔记(面向对象化程序设计的类)
- 面向对象的程序设计学习笔记1-类
- 面向对象的程序设计学习笔记3-多重继承
- 面向对象的程序设计学习笔记4-虚基类
- 面向对象的程序设计学习笔记-16-使用this指针
- 面向对象的程序设计学习笔记-17-静态成员数据
- 对jdbc进行封装(三)
- SQL server 行转换成列,case when then else end
- 关于MYSQL Innodb 锁行还是锁表
- Android权限
- 修改mysql的root用户密码
- 面向对象的程序设计学习笔记-15-函数的传值和传地址
- 性能调优攻略
- mysql更改表结构:添加、删除、修改字段、调整字段顺序
- Android平台根据分辨率计算屏幕尺寸
- GNU的ar、ranlib和nm区别(转)
- 111
- Android之Activity
- MySQL半同步Semi-sync原理介绍
- HTML4标签的默认样式列表