【C++再学习】【08】编译时与运行时
来源:互联网 发布:知乎 雷洋 编辑:程序博客网 时间:2024/06/10 10:56
(一)首先来看看const常量相关的编译时与运行时:C++ const常量不同于有些语言,可以是编译时常量,也可以是运行时常量。
运行结果int func(){ int x=0,y=1; return x+y;}int main(){ const int i = 0; int * p = (int *)&i; *p =1; int j = *p; const int k = func(); cout<<"i="<<i<<" j="<<j<<" k="<<k<<endl; return 0;}
上边代码中指针p与const常量i的地址相同,通过p改变了该地址的值,但是从输出结果可以看到i仍然是0而j成为1,这就是所谓的编译时常量,程序在编译时都已经将i替换为0,所以后续运行时的改变不会影响i的输出,这也是编译器优化技术中的常量折叠:在编译阶段,对该变量进行值替换,同时,该常量拥有自己的内存空间,并非像宏定义一样不分配空间;而另一个k则是运行时常量,因为k的值只用在执行了函数func()之后才能得到。
(二)再来看看跟多态相关的编译时与运行时:C++中多态分为两种,编译时多态和运行时多态,编译时多态主要指函数重载以及运算符重载等,而运行时多态主要指通过指针或引用调用虚函数达到动态绑定。注意运行时的多态只能通过虚函数的继承以及指针或者引用去调用才会实现,普通的函数、对象而不是指针或引用调用将不会起作用。
0 0
- 【C++再学习】【08】编译时与运行时
- 编译时与运行时
- 编译时与运行时
- 【iOS沉思录】Objective-C语言的动态性总结(编译时与运行时)
- Java:编译时与运行时
- JavaScript的“编译时”与“运行时”
- Java 编译时与运行时
- JAVA编译时与运行时
- Java之编译时与运行时
- java面试:编译时与运行时
- Java编译时与运行时
- C++编译错误与运行时错误
- C/C++的编译与运行
- C/C++的编译与运行
- C/C++的编译与运行
- java编译时与运行时概念与实例详解
- Ubuntu下学习编译运行 C/C++/Java
- 在 Mac OS X 下编译 Objective-C 运行时
- Jquery滚动插件–Xslider:支持水平滚动和垂直滚动的多种效果
- 安装时,错误 29503 ,SQL Server 服务无法启动
- 无广告优酷播放器
- firefox tabs 的管理
- linux 进程 VS 线程
- 【C++再学习】【08】编译时与运行时
- 产品36记:第十四,产品炼成?
- 开元研究品牌调研的内容
- iOS开发之后台运行
- JSP页面的构成及元素的使用
- 《高性能 JavaScript》笔记(一):脚本加载和执行
- CONVERSION_EXIT_ALPHA_OUTPUT
- 和菜鸟一起学android4.0.3源码之wifi的简单分析
- TatukGIS Developer Kernel Toolkit下载及介绍地理信息系统控件GIS控件