B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
来源:互联网 发布:playhome捏脸数据 编辑:程序博客网 时间:2024/06/02 11:16
#include<iostream>
#include<string>
usingnamespace std;
class A
{};
class B:public A
{};
void F( B& b)
{
cout<< "F( B& b)"<< endl;
}
void F( A& a)
{
cout<< "F( A& a)"<< endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
A* p1= new B;
F( *p1);//调用F( A& a)
A a;
B* p2= ( B*) &a;
F( *p2);//调用F( B& b)
/*F( *p2)调用分析:F( B& b)相当于f( B* p),F( A& a)相当于f( A* p),
而F( *p2)则相当于f( p2),而p2是B*型,当然是调用f( B* p),即调用F( B& b)。
F( *p1)亦同理。
可知,应根据参数类型匹配,而不管实际指向的对象(函数参数只管指针类型)。*/
system("pause");
return 0;
}
但是,如果没有void F( A& a)函数,即:
class A
{};
class B:public A
{};
void F( B& b)
{
cout<< "F( B& b)"<< endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
A* p1= new B;
F( *p1);//编译出错,无法将A*隐式转换为B*。本应调用f( A* p),但只有f( B* p),而由A*无法隐式转换为B*,所以不调用f( B* p),出错。
system("pause");
return 0;
}
- B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
- B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
- 指针A==B?
- 有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a
- 有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a
- 6-2-b 指针类型作为成员函数的参数
- a,b中的大值(指针)
- 指针类型与指针指向类型理解
- 数组作为函数参数 自动转换为同类型指针
- 用指向指针的指针作函数的参数(指针、指针数组、指向指针的指针)
- 用指针将字符串a复制为字符串b,然后输出字符串b
- C/C++—— 写一个函数,它的参数为指向函数的指针,返回类型也为指向函数的指针
- [*注意指向常量的字符指针变量*]用指向常量的字符指针变量和字符数组方法把字符串a复制到字符串b中
- 将指针强制类型转换为函数指针
- 函数max用指向对象的指针作函数参数
- 函数参数为指针类型(指针的指针&指针的引用)
- error C2664: “××函数”: 不能将参数 2 从“char *”转换为“LPCWSTR” 1> 与指向的类型无关;转换要求
- 指向结构体类型的指针数组做函数参数
- 坚持文字书写
- zoj1411-Anniversary(wa)
- Codeforces Round #155 (Div. 2)
- Delphi下几种线程同步
- Spring中应用Apache Wink创建REST服务
- B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
- 中国企业普遍问题及解决方法
- C#.net 简介
- [ios] xcode 4.2 创建 adhoc 发布应用测试方法
- 使用myEclipse看JAR源码的时候出现乱码
- HttpClient cokie会话保持
- 市场营销学2——顾客满意与顾客让渡价值
- Ajax应用示例: XMLHttpRequest封装
- hashCode的作用