![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
神童i
百花发时我不发我若发时都吓杀
要与西风战一场遍身穿就黄金甲
展开
-
C++全局对象不调用构造函数情况
我们知道,在通常情况下,纵然这个对象是全局的,也会调用其构造函数。但是有些情况例外。导致全局对象不调用构造函数的主要原因是编译器的问题。(主要是其中的链接器部分)首先我们要知道,全局对象初始化的时候,其构造函数是在什么时候调用的。linux下程序的执行过程。可以看到在main函数之前是有对全局变量的初始化过程的(_init -> __do_global_ctors_aux)。...原创 2020-02-08 19:13:34 · 2661 阅读 · 1 评论 -
复制构造函数重载
先看代码:以下代码编译时要加:-fno-elide-constructors 来关闭编译器优化,否则可能看不到复制构造函数的调用。#include <iostream>using std::cout;using std::endl;class A { public: A() = default; A(A& a) { cout << "c...原创 2019-12-21 13:33:35 · 1345 阅读 · 0 评论 -
浅谈delete[]如何处理数组
测试是否在数组周围存放数组大小运行结果:可见,在数组周围并没有记录数组的大小。使用delete释放数组和释放单个元素空间应该是没有区别的。如delete[] arr, delete e;释放单个元素不用解释,那么释放数组空间时是否需要获取其元素个数呢?个人认为,这是不需要的。大家都知道,在new一个对象时,执行的两个操作,operator new申请内存,然后进行构造;delet...原创 2019-12-18 12:52:46 · 9005 阅读 · 2 评论 -
指针加减运算--void*的加减
大家都知道对于一般的指针,比如int*等,其加减运算是以元素的大小为单位的。unsigned int *s = (unsigned int*)0x1234;cout << s+1 << endl;cout << s-1 << endl;其结果分别是:0x1238, 0x1230分别加减了一个unsigned int的大小,也就是4个字节。...原创 2019-12-07 16:35:38 · 5004 阅读 · 0 评论 -
new操作符分析及重载
new与operator new的区别?可以把new理解为C++中的一个关键字(准确地说是操作符)。operator new可以当成一个函数名,可能有人会问,函数名怎么可以有空格呢?其实这无伤大雅,想想我们在重载运算符时(+,-等 运算符),函数名的位置不也是类似operator+, operator-吗,+/-符号在重载时也可以作为函数名的一部分。operator new想相当于operat...原创 2019-12-05 22:53:58 · 2383 阅读 · 1 评论 -
C++ API设计
1. 隐藏实现细节一般来说,声明放在.h文件中,定义放在.cpp文件中,.h文件中也可以给出定义,如下class A { public void f() { std::cout << "In f" << std::endl; }};但是很不建议这么写,因为这种写法隐式地要求编译器在调用这个函数的地方,内联此函数,不仅暴露实现细节还将代码内联到客户程序中。...原创 2019-11-22 11:13:42 · 1797 阅读 · 0 评论 -
解决C++重定义问题--匿名命名空间
今天遇到一个命名空间重定义的问题,程序框架大体如下:interface中定义的是一个namespace, 形式如下:namespade np { int a = 1; int b = 2;};并且三个module(1,2,3),以及core模块全都需要引用这个命名空间中的数据(与消息传递有关),并且这几个模块是分别编译的,最后链接起来,编译module1, module...原创 2019-10-30 18:14:31 · 2018 阅读 · 0 评论 -
C++与汇编之间相互函数调用问题
汇编中可以直接调用C函数,C中也可以直接调用汇编函数(extern, global声明即可)但是在C++中不能直接使用,因为C++中的函数与C的函数是不同的,因为C++支持重载,编译后的函数名会带有参数的信息(如:voidfunc(int arg)可能会被处理为func_int),而C中不需要;所以要想在C++中使用汇编函数,不能直接void assmbly_func()来声明,...原创 2019-10-18 13:50:55 · 1201 阅读 · 0 评论