C++
文章平均质量分 67
SpaceKitt
"Live long and prosper."
展开
-
C++ explicit 关键字应用方法 简单明了
C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class MyClass { public: MyClass( int num ); } //.转载 2013-10-27 18:06:26 · 664 阅读 · 0 评论 -
全局变量名前面的extern
用两个例子来说明:#include extern int i=7;void main(){ printf("%d", i);}以上代码在VS2013中是成功的。下面的代码则链接失败:#include extern int i;void main(){ printf("%d", i);}即, A variable declaration that uses exter原创 2015-12-10 21:10:13 · 2550 阅读 · 1 评论 -
C++静态成员函数不能声明为const、volatile、virtual的原因 与 C++的对象模型
算是对《深度探索C++对象模型 h》原创 2014-08-31 17:54:25 · 4181 阅读 · 0 评论 -
回溯法与递归 C++中动态的二维数组
leetcode的题目,求出数独游戏的一个解。之前记得求解 全排列和八皇后问题也是用的回溯法。分治法可以用递归是很显然的,它们俩是天生一对;回溯法也可以。因为 试探求解 子问题。下面代码是递归回溯求解数独的一个解,6个测试用例,184ms,在C++分布段上处在中间,还行吧,以后有时间再研究。 关键是学到了一种方便地表示动态二维数组的新方法。一维的动态数组 就用new[]、vec原创 2014-12-22 10:48:08 · 1353 阅读 · 0 评论 -
C++ Websites, C++ Libraries
http://www.stroustrup.com/http://www.learncpp.com/http://coolshell.cn/http://www.cprogramming.com/库参考http://www.cplusplus.com/http://en.cppreference.com/w/原创 2013-10-27 17:05:50 · 854 阅读 · 0 评论 -
GCC 6.1 (C++17) doesn't compile std::atomic<std::chrono::system_clock::time_point> with default ctor
The code below will help you get through:原创 2016-11-10 11:46:51 · 1389 阅读 · 0 评论 -
A Bug which is not a std::vector bug
The story basically goes like this:/* some guy's code */struct Foo{ std::vector ints;};Foo Fooes[7];.../* another guy's code */Fooes[7].ints.push_pack(5); // Bad things happen silen原创 2016-08-19 20:37:35 · 365 阅读 · 0 评论 -
Some search result of float to int conversion
cast float to int in c++ standard,http://en.cppreference.com/w/cpp/language/implicit_conversionhttp://www.cplusplus.com/doc/tutorial/typecasting/http://en.cppreference.com/w/cpp/numeric/math转载 2017-04-28 11:56:07 · 343 阅读 · 0 评论 -
unsigned minus unsigned
Unsigned integer arithmetic is always performed modulo 2^nwhere n is the number of bits in that unsigned integer. A better name for unsigned integer + and - should be "circular plus" and "circular minus".原创 2017-03-27 22:51:08 · 461 阅读 · 1 评论 -
再谈typedef(重点为函数指针)
C语言语法简单,但内涵却博大精深;如果在学习时只是止步于表面,那么往往后期会遇到很多困难。typedef是C语言中一个很好用的工具,大量存在于已有代码中,特别值得一提的是:C++标准库实现中更是对typedef有着大量的使用。但很多初学者对其的理解仅局限于:typedef用来定义一个已有类型的"别名(alias)"。正是因为有了这样的理解,才有了后来初学者在typedef int myint和ty转载 2015-11-11 15:47:25 · 392 阅读 · 0 评论 -
构造函数中的虚函数
我们建议你谨慎调用构造函数中的虚函数。 基类构造函数始终在派生类构造函数之前调用,因此基构造函数中调用的函数是基类版本,而非派生类版本。 在下面的示例中,构造 DerivedClass 会导致执行 print_it() 的 BaseClass 实现早于 DerivedClass 构造函数导致执行 print_it() 的 DerivedClass 实现:#include using name转载 2015-04-28 16:23:12 · 728 阅读 · 0 评论 -
C++ 虚拟析构函数
当派生类的对象从内存中撤销时一般先调用派生类的析构函数,然后再调用基类的析构函数。但是,如果用new运算符建立了临时对象,若基类中有析构函数,并且定义了一个指向该基类的指针变量。在程序用带指针参数的delete运算符撤销对象时,会发生一个情况:系统会只执行基类的析构函数,而不执行派生类的析构函数。[例12.3] 基类中有非虚析构函数时的执行情况。为简化程序,只列出最必要的部分。转载 2014-08-27 17:06:46 · 548 阅读 · 0 评论 -
“虚拟”构造函数
C++中的构造函数不可能是虚拟的,所谓的“虚拟”构造函数转载 2014-08-27 19:07:01 · 1351 阅读 · 0 评论 -
Item M3:不要对数组使用多态 无责任书评
Item M3:不要对数组使用多态 类继承的最重要的特性是你可以通过基类指针或引用来操作派生类。这样的指针或引用具有行为的多态性,就好像它们同时具有多种形态。C++允许你通过基类指针和引用来操作派生类数组。不过这根本就不是一个特性,因为这样的代码几乎从不如你所愿地那样运行。假设你有一个类 BST(比如是搜索树对象)和继承自 BST 类的派生类 BalancedBST: clas转载 2014-09-23 17:33:07 · 491 阅读 · 0 评论 -
C++ trivial knowledge
trivial default constructor、trivial destructor、trivial copy constructor、trivial copy as原创 2014-09-07 17:01:25 · 704 阅读 · 0 评论 -
C++ 异常 与智能指针
void func ( void * arena){ auto_ptr ph (new Point); SMLock sm ( arena ); // ... // sm.SMLock::~SMLock(); // ph.auto_ptr::~auto_ptr()}原创 2014-10-29 12:00:33 · 811 阅读 · 1 评论 -
c++ string 没有 split
但愿这篇笔记能在不久后变成陈旧的,C++ 标准库 扩充上了splitC++标准库的string没有split方法,在java和C#中有的。虽然标准库的string的方法:使用find_first_of、substr、循环也能实现split,但是有很多更简单的办法:1、借助CC++是兼容C的,能使用C语言的库函数。标准库没有split,但 中却有个 strtok 。原创 2015-01-23 22:34:29 · 2400 阅读 · 0 评论 -
memcpy memmove 的区别
memcpy naive的内存复制,源内存块和目的内存块不能重叠,重叠的话不能保证执行后 目的内存块的值是原来源内存块的值。memmove 源内存块和目的内存块允许重叠,就好像使用了一个中间缓冲区作为中转一样,但完全不用中间缓冲区就能实现,其实。具体的实现代码可以参考,这个。还有 它 也解释了它们的区别。转载 2015-01-23 10:50:47 · 636 阅读 · 0 评论 -
C语言的指针 指针常量 只读 多维数组的指针
C语言实验,又复习了一边指针void a; //错,C语言变量必须指定类型以表示需要多大的存储空间,以及如何解释该存储空间的二进制数据。void 没有说多大,所以不行。地址是内存单元的编号,以字节为单位。存放地址的叫指针。指针分两种:指针变量、指针常量。int a,b;int * p = &a; //p是指针变量,因为p的值是可以被改变的,改成别的地址值p=&b;int c原创 2014-12-12 15:12:17 · 1247 阅读 · 2 评论