赞
踩
当然可以用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;}
阅读全文 >
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。