当前位置:   article > 正文

c语言面向对象吗,为什么C语言不能按照面向对象的思想来编程。

c语言为什么不是面向对象

当然可以用C语言进行面向对象编程。面向对象本身是一种思想,而用哪种语言实现只是一种技术手段。事实上思想和技术的关系本身就是class和object的关系。classoo{//这是面向对象的思想类};oojava;//java是oo的一个具体的技术实现oocxx;//c++是oo的一个具体的技术实现拿Windows系统来讲,它是有C语言编写的,但是使用的却是面向对象的思想,这方面可以参考reactos(一个免费开源的用于大学教授操作系统原理的windows系统)。举一个例子也许更实际一些,比如,操作系统有两种操作界面,一种是GUI界面,一种是控制台界面,在windows平台上编写一个程序,在cmd中运行时,执行控制台界面的代码,在GUI中运行的时候,执行图形界面的代码。这实际上也算是一种面向对象编程中的多态实例。以下示例代码在vc6.0编译通过。#include <stdio.h> #include <tchar.h>#include <windows.h>#include <TLHELP32.H>char what_shell_run(){HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hSnap==0){return _T('E');}PROCESSENTRY32 pe32 = {0};pe32.dwSize = sizeof pe32;DWORD dwSelfPid = GetCurrentProcessId();DWORD dwParentPid = ~0;for (BOOL bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32)){if (dwSelfPid==pe32.th32ProcessID){dwParentPid = pe32.th32ParentProcessID;break;}}if (dwParentPid==~0) return _T('U');for (bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32)){if (dwParentPid==pe32.th32ProcessID){if (lstrcmpi(pe32.szExeFile, _T("cmd.exe"))==0){CloseHandle(hSnap);return _T('C');}else if (lstrcmpi(pe32.szExeFile, _T("explorer.exe"))==0){CloseHandle(hSnap);return _T('G');}}  }CloseHandle(hSnap);return _T('U');}void console(void) {printf("这是一控制台程序\n");}void gui (void) {MessageBox(0, _T("这是一个GUI程序"), _T("GUI"), MB_OK);}int main(){char ch = what_shell_run();switch (ch){case 'C':console();break;case 'G':gui(); break;}return 0;}

阅读全文 >

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/43365
推荐阅读
相关标签
  

闽ICP备14008679号