| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:关于c++
只看楼主 加入收藏
zxs0707
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2005-4-3
收藏
 问题点数:0 回复次数:0 
关于c++
c++ 只是一种人们赋予并自觉执行的概念性的东西,其实对于操作系统都是拿来二进制(或者说汇编)来执行,它只知道move来move去的.至于c++的实现完全是在你写代码的时候编译器的规则.
你写了个函数,它在编译的时候给你加了个 this 来确定这个"类"的代码在程序中的位置,你调类里的函数或者变量的时候它就在你的this的基础上加个数,也就找到了你要的函数,this其实也就是个指针,所以你把类指针指到某个基类上去了,它也就去调那个基类的函数了.
在vc里 interface 其实就是个struct,至于struct和class有什么本质的区别我描绘不清楚,应该是在编译的时候在生成其之前把它的父类也生成了,在生成的时候在自动调构造函数,生成一个函数表,如果父类是虚类的话就不把函数表添上等到用的时候在指定内容吧,不是很确定.在编译器编译的代码里并没有类这个东西,它的函数都在代码段中(win32 flat模式),变量是在编译器看到有类的对象存在时才在堆栈上生成它的变量.
对于重载,那些"相同的函数名" "不同的参数" 只是个假相而已,编译器编译的时候在原来的函数名后面加了一大堆的字符以用来区别,执行到汇编的级别编译器就已经根据值的不同替换成不同的函数了.


_________________
世界上本没有 C++ ,编译器限制的多了,也就成了C++
搜索更多相关主题的帖子: interface 编译器 二进制 操作系统 
2005-04-12 18:18
快速回复:关于c++
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013832 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved