
C++
文章平均质量分 55
NXGG
Program Lover
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
隐藏的坑——C++中局部静态变量的构造/析构顺序问题
首先,这是个“老问题”了,今番再论,实在是有感而发。首先要明确一条原则:构造与析构的顺序是相反的。个人总结,在这个知识点的理解和掌握上,有四层“境界”:第一层:理解一个类内部各个数据成员之间的构造/析构顺序。这里需要注意的是,数据成员的构造顺序与其在类中声明的顺序相同,而无论构造函数中初始化列表中的顺序,这个不难;第二层:理解基类和派生类之间的构造/析构顺序。这似乎是大部分C++教材或者书籍着墨最多的知识点,当然也不难掌握;第三层:理解在函数内部出现的局部变量的构造/析构顺序。同上,也不难掌.原创 2021-03-13 20:37:13 · 4594 阅读 · 1 评论 -
error C3861: '_FPOSOFF': identifier not found
把Win7下使用vs2005可正常编译通过的一个ActiveX工程代码拿到Win10下使用vs2012编译,突然冒出这样的错误:error C3861: '_FPOSOFF': identifier not found解决办法:1.找到工程中的预编译头文件:stdafx.h2.删除其中的define语句:#define _CSTDIO_3.重新编译,通过。原因简析:直...原创 2020-03-09 17:55:00 · 1151 阅读 · 0 评论 -
C2299:显式专用化不能复制构造函数或复制赋值运算符
Visual C++ 2005以前版本的 Visual c + + 允许复制构造函数或复制赋值运算符的显式专用化。若要解决 C2299,不要复制构造函数或赋值运算符的模板函数,但而是采用一个类类型的非模板函数。 通过显式指定模板参数将调用复制构造函数或赋值运算符的任何代码需要删除的模板参数。示例如下:// C2299.cpp // compile with: /c class...原创 2020-01-16 18:42:52 · 357 阅读 · 0 评论 -
C++ using关键字作用总结
C++ using关键字作用总结原本想对using的用法进行一个总结的,不过发现已经有人这么做了,而且写得不错,就直接引用啦,感谢原文作者原文链接:https://www.cnblogs.com/ustc11wj/archive/2012/08/11/2637316.html1.在当前文件中引入命名空间这是我们最熟悉的用法,例如:using namespace std;...转载 2019-12-19 16:32:19 · 767 阅读 · 0 评论 -
C++语法点滴
这篇文章用于记录一些容易被忽略或鲜为人知的C++语法点随时更新……1.默认参数在声明一个具有默认参数的函数或方法时,一般的写法如下:void Foo(int iData, bool bFlag = true);偷懒一点,也可以写成这样:void Foo(int iData, bool = true);2.拷贝构造函数的形式只有一种,即 X::X(const X&am...原创 2019-12-19 15:56:06 · 180 阅读 · 0 评论 -
C++类成员的初始化顺序解析
为什么写这个话题,因为载在这里了,所以有必要总结一下,同一个错误总不能犯两次不是么在大多数情况下,类成员的初始化顺序对程序运行是没有影响的,原因很简单,类成员在类构造函数中进行初始化时,是相互独立的,因此谁先谁后并不重要。然当成员变量的初始化有顺序依赖时,问题就出现了。这个问题的答案也很简单——构造函数中,成员变量的初始化顺序跟类声明中成员变量的声明顺序一致,而与初始化列表中顺序无关...原创 2019-12-18 12:49:35 · 614 阅读 · 0 评论 -
C/C++“潜规则”之——默认的private
private这个关键词是C++中出现的,因此这篇文章应当对应的是C++的语法总结众所周知,在类声明中,默认的访问修饰符是private,例如:class Foo{ int m_iData; //默认为private私有成员public: Foo(int iData); int GetData(void) const;};那么这个默认的pr...原创 2019-12-18 11:48:26 · 1658 阅读 · 0 评论 -
优先考虑引用!Think more of reference than pointor
作为一个C++的专属话题,相关的文章和资料已经很多了,这里把个人认为精要的部分提出来,供诸位品评(1)由于不存在空引用,因此函数参数列表中使用引用相比指针意味着更加高效——因为引用不用像指针参数那样判断是否为空;(2)从语义上来看,引用是某个内建类型或对象的别称,它是从一而终的,而指针作为存储内存地址的变量则要活泼得多。理解两者语义的差别,能帮助我们作为更为明智的判断;暂时就想到...原创 2019-10-20 17:20:18 · 162 阅读 · 0 评论 -
C++虚函数返回值类型的协变(covariant)问题
先看代码:class CBase{public: virtual int DoJob(void){ return 0; } virtual CBase* Clone(void){ return new CBase; } virtual CBase& GetStatic(void){ static CBase StaticObj; return Stati...原创 2019-11-02 16:01:16 · 5208 阅读 · 0 评论 -
NULL与nullptr
NULL和nullptr都是用来表示空指针的。但NULL是什么?要回答这个问题,要看在什么语言环境下。纯C语言环境,譬如说Tuber C那个年代,没有NULL,需要自己通过#define的方式定义,一般定义为0而到了C/C++语言环境,这个问题就稍稍复杂了一点换句话说,到了C/C++编译器中,C中的NULL被定义为了地址为0的void类型指针,而不是0这个数值为什么呢,因为...原创 2019-10-20 19:01:26 · 216 阅读 · 0 评论 -
C++风格的类型转换总结
总结一下C++的类型转换:(1)static_cast:基本上等同于C的类型转换,简单粗暴;(2)const_cast:用于去除内建类型或对象的const或volatile属性,当然,以前者为多。个人认为,应当尽量避免使用,如果真的要使用const_cast,得认真思考一下是不是设计上有可以改进的地方;C++还有一种个人感觉较为奇特的去除变量const属性的方法,代码如下:con...原创 2019-10-20 17:38:28 · 333 阅读 · 0 评论