重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
虚函数的作用是可以通过基类的指针或者引用调到派生类的这个函数。
成都创新互联公司专注于余干网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供余干营销型网站建设,余干网站制作、余干网页设计、余干网站官网定制、微信平台小程序开发服务,打造余干网络公司原创品牌,更为您提供余干网站排名全网营销落地服务。
你上面的代码是演示虚函数的作用,不用去简便他。
你可以把这个程序中的virtual全部删除掉,然后再运行程序,观察一下两次结果的不一样,估计你就能理解虚函数的作用了。
#include stdio.h
#include stdlib.h
typedef struct {
int n;
double *value;
}Vector;
void createvector(Vector *x, int n){
x-n=n;
double *value=malloc(sizeof(double)*n);
x-value=value;
}
void deletevector(Vector *x){
free(x-value);
}
int main()
{
int n,i;
Vector *temp=malloc(sizeof(Vector));
printf("n=");
scanf("%d",n);
createvector(temp,n);
for(i=0;in;i++){
scanf("%lf",temp-value+sizeof(double)*i);
}
printf("%d\n",n);
for(i=0;in;i++){
printf("%lf\n",*(temp-value+sizeof(double)*i));
}
deletevector(temp);
free(temp);
return 0;
}
class 冰箱: public goods
{ public:
void price(){ 计算冰箱价格;}
};
class 彩电: public goods
{ public:
void price(){ 计算彩电价格;}
};
class 空调: public goods
{ public:
void price(){ 计算空调价格;}
};
class goods
{ public:
virtual void price() {}//虚函数
};
void fun(goods *p)
{ p-price();
}
void main()
{ goods *p;
冰箱 A;
p=A;
fun(p);
//其他类同 注意调用格式。必须是 基类指针。
}
C语言可以通过宏,在你需要的位置宏展开出一个新的函数。
例如:
#define XXX(funcname) \
int funcname (int arg1, int arg2) \
{ return arg1 + arg2; }
但这也是编译期就决定好了的,也不能实现运行期动态创建。