论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C语言中的面向对象(1)-类模拟和多态,继续

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:20:00

  在面向对象的语言里面,出现了类的概念。这是编程思想的一种进化。所谓类:是对特定数据的特定操作的集合体。所以说类包含了两个范畴:数据和操作。而C语言中的struct仅仅是数据的集合。(liyuming1978@163.com)

  1.实例:下面先从一个小例子看起
#ifndef C_Class
       #define C_Class struct
#endif
 
C_Class A {
       C_Class A *A_this;
       void (*Foo)(C_Class A *A_this);
       int a;
       int b;
};
 
C_Class B{               //B继续了A
       C_Class B *B_this;  //顺序很重要
       void (*Foo)(C_Class B *Bthis);              //虚函数
       int a;
       int b;
 
       int c;
};
 
 
void B_F2(C_Class B *Bthis)
{
       printf("It is B_Fun\n");
}
 
void A_Foo(C_Class A *Athis)
{
       printf("It is A.a=%d\n",Athis->a);//或者这里
//     exit(1);
//     printf("纯虚 不答应执行\n");//或者这里
}
 
void B_Foo(C_Class B *Bthis)
{
       printf("It is B.c=%d\n",Bthis->c);
}
 
void A_Creat(struct A* p)
{
       p->Foo=A_Foo;
       p->a=1;
       p->b=2; 
       p->A_this=p;
}
 
 
void B_Creat(struct B* p)
{
       p->Foo=B_Foo;
       p->a=11;
       p->b=12;      
       p->c=13;
       p->B_this=p;
}
 
 
int main(int argc, char* argv[])
{
       C_Class A *ma,a;
       C_Class B *mb,b;
 
       A_Creat(&a);//实例化
       B_Creat(&b);
 
       mb=&b;
       ma=&a;
 
       ma=(C_Class A*)mb;//引入多态指针
       printf("%d\n",ma->a);//可惜的就是 函数变量没有private
       ma->Foo(ma);//多态
       a.Foo(&a);//不是多态了
       B_F2(&b);//成员函数,因为效率问题不使用函数指针
       return 0;
}

  输出结果:

11
It is B.c=13
It is A.a=1
It is B_Fun
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058