派生类传递基类指针参数

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:39:43
#include <iostream.h>
#include <string.h>
class Point
{
int x,y;
public:
Point (int x1,int y1):x(x1),y(y1)
{
cout<<x<<' '<<y<<'\n';
}
~Point(){}
};
class Text
{
char text[100];
public :
Text (char *str)
{
strcpy(text,str);
cout<<*str<<endl;
}
~Text(){}
};
class Cic:public Point,public Text
{
public:
Cic(int cx,int cy,char *msg):Point (cx,cy),Text(msg){}
~Cic(){}
};
void main()
{
Cic cm(3,4,"Hello");
}

这里的Cic类是Point和Text的派生类,其构造函数在给Text传递指针参数的时候为什么没有带*号,而Text的构造函数在定义的时候其参数是*str???

一个是定义,一个是调用啊。
而且你可能你没理解类型。char*和char都是一种类型。
Text(char* msg)中,char*是一个类型,msg是虚参数。而调用的时候不需要写类型了。比如:
void func(int a);
调用的时候只要func(6);就可以了,不需要func(int 6);而且这样编译也通不过。

传进去的是~实参~~是一个地址~~如果加了*~那么传进去的就是~地址里面的内容~~
因为传进去的是地址~~所以形参~里面用来接受的~必须是一个指针~所以要加*~~