手机版
热门标签
站点地图
我要投稿
广告合作
联系我们
搜 索
广告位招租
广告位招租
切换导航
首页
编程教程
编程导航
编程百科
编程问答
编程博文
编程实例
硬件设备
网络运营
软件教程
移动数码
办公软件
操作系统
人工智能
栏目导航
▸ 编程语言
▸ 前端开发
▸ 移动开发
▸ 开发工具
▸ 程序设计
▸ 行业应用
▸ CMS系统
▸ 服务器
▸ 数据库
公众号推荐
微信公众号搜
"智元新知"
关注
微信扫一扫可直接关注哦!
子栏目导航
PHP
Java
Java SE
Python
NumPy
C#
C&C++
Ruby
VB
asp.Net
Go
Perl
netty
gRPC
Django
Delphi
Jsp
.NET Core
Spring
Flask
Springboot
SpringMVC
Spring Cloud
Lua
fastadmin
Laravel
Mybatis
Asp
Groovy
ThinkPHP
Yii
swoole
编程之家
C&C++
宏定义里面为什么要加括号?
在宏定义当中,常常可以看到宏的参数以及整个宏的定义都被小括号包围,就像下面的 MIN、MAX、ABS 宏一样: 上面的图截取自 iOS 的系统库,那为什么它们需要这些括号包围起来呢? 下面假如我们自定义了宏 ceil_div,代码如下: #define ceil_div(x, y) (x + y -
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中含有虚基类对象的析构
c++中,当继承结构中含有虚基类时,在构造对象时编译器会通过将一个标志位置1(表示调用虚基类构造函数),或者置0(表示不调用虚基类构造函数)来防止重复构造虚基类子对象。如下图菱形结构所示:当构造类Bottom对象时,Bottom构造函数里面的c++伪码如下(单考虑标志位,不考虑其他)://Botto
作者:chaoguo1234 时间:2024-07-29
C中文件操作的文本模式和二进制模式,到底有啥区别?
在C中,使用fopen打开文件有两种模式:一种是文本模式,一种是二进制模式。那这两种模式之间有什么区别,是不是使用文本模式打开的文件就只能使用文本函数比如fprintf来操作,而使用二进制打开的文件就只能使用二进制函数比如fwrite来操作呢? 答案是否定的。C里面之所以有文本模式和二进制模式,完全
作者:chaoguo1234 时间:2024-07-29
什么是尾数
尾数英文名叫mantissa,significand,coefficient,用于科学计数法中。科学计数法的表示方法为: Mantissa x Base^Exponent 举个例子,123.45用科学计数法可以表示为: 12345 x 10^(-2) 其中12345就是尾数Mantissa,10是基
作者:chaoguo1234 时间:2024-07-29
可变参数宏
定义宏时可以让宏接收可变参数,对于可变参数的定义,标准 C 和 GNU C(GNU 对 C的扩展)是不一样的。 标准 C 标准 C 对于可变参数的定义如下,使用...: #define eprintf(...) fprintf (stderr, __VA_ARGS__) 在宏定义中,__VA_ARG
作者:chaoguo1234 时间:2024-07-29
宏参数(Arguments)的扩展
宏分为两种,一种是 object-like 宏,比如: #define STR "Hello, World!" 另一种是 function-like 宏,比如: #define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) 对于 function-li
作者:chaoguo1234 时间:2024-07-29
宏定义中的重复副作用
副作用(Side Effect) 在计算机当中,副作用指当调用一个函数时,这个函数除了返回一个值之外,还对主调函数产生了影响,比如修改了全局变量,修改了参数等等。 宏的重复副作用 对于求两个数中的最小数,常常可以定义一个宏 MIN,定义如下: #define MIN(X, Y) ((X) <
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中指向成员变量的指针(二)
在从汇编看c++中指向成员变量的指针(一)中讨论的情形没有虚拟继承,下面来看看,当加入了虚拟继承的时候,指向成员变量的指针有什么变化。下面是c++源码:#include #include using namespace std;class Top {public: int _top;};class
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中全局对象和全局变量
先来看c++源码:#include using namespace std;class X {public: int i;public: X(int ii = 0) : i(ii) { } ~X() {}};X xxx(1);//全局对象int i = 2;//全局变量int main() {}在代
作者:chaoguo1234 时间:2024-07-29
C++ 转换构造函数
在 C++ 中如果一个构造函数只有一个参数,那么这个构造函数就是转换构造函数(Converting Constructor),这个构造函数可以将参数类型转换成构造函数所在的类对应的类型。 举个例子,假设有如下类 Complex: 1 class Complex { 2 private: 3 int
作者:chaoguo1234 时间:2024-07-29
vs2010中的外部依赖项的含义
vs2010中的项目下拉列表下面有外部依赖项,里面显示的文件是你程序中显示包含的头文件所包含的的头文件。比如,你的main函数里面包含了windows.h头文件,而windows.h头文件又包含其他头文件,而这些头文件又可能还包含另外的头文件,所有这些都显示在外部依赖项里面。
作者:chaoguo1234 时间:2024-07-29
从汇编看c++的new和delete
下面是c++源码:class X {private: int _x;public: X(int xx = 0) : _x(xx) {} ~X() {}};int main() { X* xp = new X; delete xp; }代码很简单,在main函数里面先用new构造一个堆对象,然后用de
作者:chaoguo1234 时间:2024-07-29
vs2010中出现:程序管理器匹配不正确错误
http://bbs.csdn.net/topics/360074795这是一篇csdn上的讨论帖,第15楼给出了正解
作者:chaoguo1234 时间:2024-07-29
定点数(fixed-point number)
定义 定点数(fixed-point number)就是小数点位置固定的数,也就是说,小数点后面的位数是固定的,比如要记录一笔账目,这些账目的数字都不会超过100,就可以使用2位小数位定点数来记录,比如99.99,2.30,75.28;如果要更精确,可以使用3位小数位的定点数来记录,比如7.668,
作者:chaoguo1234 时间:2024-07-29
从汇编看c++成员函数指针(三)
前面的从汇编看c++中成员函数指针(一)和从汇编看c++成员函数指针(二)讨论的要么是单一类,要么是普通的多重继承,没有讨论虚拟继承,下面就来看一看,当引入虚拟继承之后,成员函数指针会有什么变化。下面来看c++源码:#include using namespace std;class Top {pu
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中的多态
在c++中,当一个类含有虚函数的时候,类就具有了多态性。构造函数的一项重要功能就是初始化vptr指针,这是保证多态性的关键步骤。构造函数初始化vptr指针下面是c++源码:class X {private: int i;public: X(int ii) { i = ii; } virtual vo
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中的虚拟继承及内存布局(二)
下面是c++源码:class Top {//虚基类public: int i; Top(int ii) { i = ii; } virtual int getTop() { cout getLeft(); int ltop = lp->getTop(); //向上转换为Right Right*
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中的默认拷贝函数
《c++编程思想》上说一个类如果没有拷贝函数,那么编译器就会自动创建一个默认的拷贝函数。下面就让我们看一下真实的情况。首先看一个简单的类X,这个类没有显示定义拷贝构造函数。c++源码如下:class X {private: int i; int j;};int main() { X...
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中参数对象和局部对象的析构顺序
下面是c++的源码:class X {public: int i; int j; ~X() {} };void f(X x) { X x1; x.i = 1; x.j = 2; }int main() { f(X());} 下面是main函数的汇编码:_main PROC; 15 : int mai
作者:chaoguo1234 时间:2024-07-29
从汇编看c++内联函数评估求值
在c++中,一个inline函数实体,在整个class 声明未被完全看到之前,是不会被评估求值的,也就是说,对于类里面内联的成员函数本身的分析,要等到class的声明完全结束之后才开始。下面试c++源码:extern int x;//外部声明的xclass X {public: float getX
作者:chaoguo1234 时间:2024-07-29
从汇编看c++成员函数指针(二)
下面先看一段c++源码:#include using namespace std;class X {public: virtual int get1() { return 1; } virtual int get2() { return 2; }};class Y {public: virtual
作者:chaoguo1234 时间:2024-07-29
论c++中对象的内存布局
对象的内存布局就是计算对象所占用的内存大小,对象的大小只包含数据成员,类成员函数是执行代码,不属于对象的数据成员。在不讨论类的继承,以及虚函数的时候。一个对象的大小的计算公式一般为:对象的大小= sizeof(数据成员1) + sizeof(数据成员2) + ... + sizeof(数据成员n)。
作者:chaoguo1234 时间:2024-07-29
从汇编看c++多重继承中this指针的变化
先来看一下下面的c++源码:#include using namespace std;class X {public: virtual void print1() { cout print1(); zp->print3(); /*******************以派生里指针调用派生类虚函数
作者:chaoguo1234 时间:2024-07-29
从汇编看c++函数的默认参数
在c++中,可以为函数提供默认参数,这样,在调用函数的时候,如果不提供参数,编译器将为函数提供参数的默认值。下面从汇编看其原理。下面是c++源码:int add(int a = 1, int b = 2) {//参数a b有默认值 return a + b;}int main() { int c=
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中临时对象的析构时机
c++中,临时对象一旦不需要,就会调用析构函数,释放其占有的资源;而具名对象则是与创建的顺序相反,依次调用析构函数。c++源码:class X {public: int i; int j; ~X() {} X() {} };int main() { X x1; X(); x1.i = 1; X x2
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中指向成员变量的指针(一)
在c++中,指向类成员变量的指针存储的并不是该成员变量所在内存的地址,而仅仅是该成员变量在该类对象中相对于对象首地址的偏移量。因此,它必须绑定到某一个对象或者对象指针上面,这里的对象和对象指针,就相当于充当了this指针的容器。下面先看c++源码以及输出结果:#include #include us
作者:chaoguo1234 时间:2024-07-29
从汇编看c++的虚拟继承以及其内存布局(一)
先看第一种最简单的情形,所有类中没有任何虚函数的菱形继承。下面是c++源码:class Top {//虚基类public: int i; Top(int ii) { i = ii; }};class Left : public virtual Top {public: int j; Left(int
作者:chaoguo1234 时间:2024-07-29
可见性和生命期的区别
变量的可见性(即作用域)和生命期既有区别,又有联系。一个变量在程序的某处没有可见性,但生命期任然可以存在,比如局部静态变量的可见性在它所在的函数里面,在函数外部不可访问,但是它的生命期确是整个程序的运行期间;而一个变量生命期结束,它也就没有了可见性,就像局部变量,随着栈空间的释放,它也就不存在了,所
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中的const常量
书上说对于const类型的复杂结构,比如struct,class,数组等,一定会分配储存空间,并且不能发生常量折叠。而对于基本的数据类型,在一般情况下并不分配存储空间,只是记录到符号表里面,除非对这个变量取值或者用extern声明。下面来看这一种情况:c++源码:int main() { const
作者:chaoguo1234 时间:2024-07-29
从汇编看c++中成员函数指针(一)
下面先来看c++的源码:#include using namespace std;class X {public: int get1() { return 1; } virtual int get2() { return 2; } virtual int get3() { return 3; }};
作者:chaoguo1234 时间:2024-07-29
上一页
1
2
3
4
5
6
7
8
下一页
小编推荐
热门标签
更多
python
JavaScript
java
HTML
reactjs
C#
Android
CSS
Node.js
sql
r
python-3.x
MysqL
jQuery
c++
pandas
Flutter
angular
IOS
django
linux
swift
typescript
路由器
JSON
路由器设置
无线路由器
h3c
华三
华三路由器设置
华三路由器
电脑软件教程
arrays
docker
软件图文教程
C
vue.js
laravel
spring-boot
react-native