请问一个超小程序的一个小疑点
请教一个超小程序的一个小问题
#include <iostream>
using namespace std;
class test
{
private:
int number;
public:
float socre;
int pp;
public:
int rp(int);
};
int test::rp(int a)//在外部利用域区分符定义test类的成员函数
{
number=100;
return a + number;
}
void run(test *p)//利用指针调用
{
cout < <p-> rp(100) < <endl;
}
void run(test &p)//利用引用
{
cout < <p.rp(200) < <endl;
}
void main()
{
test a;
run(&a);
run(a);
cin.get();
}
问题来了!这段里
void run(test *p)//利用指针调用
{
cout < <p-> rp(100) < <endl;
}
void run(test &p)//利用引用
{
cout < <p.rp(200) < <endl;
}
这里又是指针又是引用又是-> 又是.的是什么意思?
请解释一下很感激!
------解决方案--------------------
run(&a); 调用指针
run(a);引用
------解决方案--------------------
这是C++基础问题,所谓引用调用,指的是传给函数的参数是这个参数的地址,如上面的
void run(test &p)//这里
调用时run(&a); 这里a被传入了函数,而在函数体内修改的是a的本身,而不是a 的一个拷贝,指针调用和引用调用类似。
------解决方案--------------------
run(&a); 调用的是void run(test *p)//利用指针调用 因为这个函数要的是带地址的参数,所以你要给他一个地址了,那&a 传递的就是a的地址了。
run(a); 调用的是void run(test &p)//利用引用 因为这个函数的参数给他的参数a起了一别名,就是他把a叫做p了,当然a、p指的是同一个东东了。是指针当然要用 "-> ",是引用就要用 ". "操作符了.
#include <iostream>
using namespace std;
class test
{
private:
int number;
public:
float socre;
int pp;
public:
int rp(int);
};
int test::rp(int a)//在外部利用域区分符定义test类的成员函数
{
number=100;
return a + number;
}
void run(test *p)//利用指针调用
{
cout < <p-> rp(100) < <endl;
}
void run(test &p)//利用引用
{
cout < <p.rp(200) < <endl;
}
void main()
{
test a;
run(&a);
run(a);
cin.get();
}
问题来了!这段里
void run(test *p)//利用指针调用
{
cout < <p-> rp(100) < <endl;
}
void run(test &p)//利用引用
{
cout < <p.rp(200) < <endl;
}
这里又是指针又是引用又是-> 又是.的是什么意思?
请解释一下很感激!
------解决方案--------------------
run(&a); 调用指针
run(a);引用
------解决方案--------------------
这是C++基础问题,所谓引用调用,指的是传给函数的参数是这个参数的地址,如上面的
void run(test &p)//这里
调用时run(&a); 这里a被传入了函数,而在函数体内修改的是a的本身,而不是a 的一个拷贝,指针调用和引用调用类似。
------解决方案--------------------
run(&a); 调用的是void run(test *p)//利用指针调用 因为这个函数要的是带地址的参数,所以你要给他一个地址了,那&a 传递的就是a的地址了。
run(a); 调用的是void run(test &p)//利用引用 因为这个函数的参数给他的参数a起了一别名,就是他把a叫做p了,当然a、p指的是同一个东东了。是指针当然要用 "-> ",是引用就要用 ". "操作符了.