如何在C语言中使用面向对象的技术(c++免谈)如果可以,我需要相关书籍!
我在阅读linux开源的原代码时,经常遇见使用面向对象的编程方式编写的C代码。不知道有没有高人遇见过,或者有相关的编程技术文档,发给小弟,不胜感激!相关代码如:struc...
我在阅读linux开源的原代码时,经常遇见使用面向对象的编程方式编写的C代码。不知道有没有高人遇见过,或者有相关的编程技术文档,发给小弟,不胜感激!
相关代码如:
struct fuse_operations callback_oper = {
.mknod = callback_mknod,
.symlink = callback_symlink,
.unlink = callback_unlink,
.rmdir = callback_rmdir,
.rename = callback_rename,
.link = callback_link,
.chmod = callback_chmod,
.chown = callback_chown,
.utime = callback_utime,
.getattr = callback_getattr,
.readlink = callback_readlink,
.readdir = callback_readdir,
.mkdir = callback_mkdir,
.truncate = callback_truncate,
.open = callback_open,
.read = callback_read,
.write = callback_write,
.statfs = callback_statfs,
.release = callback_release,
.fsync = callback_fsync,
.access = callback_access,
.create = callback_create,
.setxattr = callback_setxattr,
.getxattr = callback_getxattr,
.listxattr = callback_listxattr,
.removexattr= callback_removexattr
};
我不知道如何学得这种设计的思想!
struct ipmi_cmd {
int (*func)(struct ipmi_intf * intf, int argc, char ** argv);
const char * name;
const char * desc;
};
struct ipmi_cmd ipmitool_cmd_list[] = {
{ ipmi_raw_main, "raw", "Send a RAW IPMI request and print response" },
{ ipmi_rawi2c_main, "i2c", "Send an I2C Master Write-Read command and print response" },
{ ipmi_rawspd_main, "spd", "Print SPD info from remote I2C device" },
{ ipmi_lanp_main, "lan", "Configure LAN Channels" },
{ ipmi_chassis_main, "chassis", "Get chassis status and set power state" },
{ ipmi_power_main, "power", "Shortcut to chassis power commands" },
{ ipmi_event_main, "event", "Send pre-defined events to MC" },
}
像c++中的重载,在c中它是类似这样设计。我所见到的代码大量利用这样的设计方式及回调函数的技术,这种技术让我又佩服又摸不透!
重申:搞理论的就别掺和了,理论我在大学时见多了 展开
相关代码如:
struct fuse_operations callback_oper = {
.mknod = callback_mknod,
.symlink = callback_symlink,
.unlink = callback_unlink,
.rmdir = callback_rmdir,
.rename = callback_rename,
.link = callback_link,
.chmod = callback_chmod,
.chown = callback_chown,
.utime = callback_utime,
.getattr = callback_getattr,
.readlink = callback_readlink,
.readdir = callback_readdir,
.mkdir = callback_mkdir,
.truncate = callback_truncate,
.open = callback_open,
.read = callback_read,
.write = callback_write,
.statfs = callback_statfs,
.release = callback_release,
.fsync = callback_fsync,
.access = callback_access,
.create = callback_create,
.setxattr = callback_setxattr,
.getxattr = callback_getxattr,
.listxattr = callback_listxattr,
.removexattr= callback_removexattr
};
我不知道如何学得这种设计的思想!
struct ipmi_cmd {
int (*func)(struct ipmi_intf * intf, int argc, char ** argv);
const char * name;
const char * desc;
};
struct ipmi_cmd ipmitool_cmd_list[] = {
{ ipmi_raw_main, "raw", "Send a RAW IPMI request and print response" },
{ ipmi_rawi2c_main, "i2c", "Send an I2C Master Write-Read command and print response" },
{ ipmi_rawspd_main, "spd", "Print SPD info from remote I2C device" },
{ ipmi_lanp_main, "lan", "Configure LAN Channels" },
{ ipmi_chassis_main, "chassis", "Get chassis status and set power state" },
{ ipmi_power_main, "power", "Shortcut to chassis power commands" },
{ ipmi_event_main, "event", "Send pre-defined events to MC" },
}
像c++中的重载,在c中它是类似这样设计。我所见到的代码大量利用这样的设计方式及回调函数的技术,这种技术让我又佩服又摸不透!
重申:搞理论的就别掺和了,理论我在大学时见多了 展开
展开全部
想学面向对象编程就学面向对象的语言,C本身就是面对过程的,就算是编写出面向对象的样式,也没有面向对象的特性,为何多此一举?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言是面向过程的语言,上面的代码使用的是结构体,c++语言是基于对象的(不是纯面向对象的,就叫基于对象的)。本身结构体在c++中就类似于类,也就是说与类的使用有那么一点接近,但是之间还是有很大区别的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实就是一个结构体中既有一般的数据成员,比如 int a; char b;等等,(这些就好比C++ 类中的数据成员),然后还有一些函数指针,(这就好比类中 成员函数一样)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询