C++ 2011编程
代码即真相, 本专栏全部以代码的形式进行讲解. C++ 2011 提升了TR1("Technical Report 1")的部分内容 和 推出了额外的功能, 使得C++程序标准更加完善. 本专栏向国内的朋友介绍这些新的特性, 使编写出C++程序能够与时俱进.
Caroline S
Love magic for itself.
展开
-
C++ - 库函数优先级队列(priority_queue)输出最小值 代码
库函数优先级队列(priority_queue)输出最小值 代码本文地址:http://blog.csdn.net/caroline_wendy库函数优先级队列(priority_queue)的实现方式是堆(heap), 默认是输出最大值.输出最小值, 需要指定参数,priority_queue, greater >代码:/* * main.cpp * * Created on: 20原创 2014-07-21 09:23:41 · 7613 阅读 · 0 评论 -
C++ - "No source available for "__chkstk_ms() at 0x401f0b"" 异常
"No source available for "__chkstk_ms() at 0x401f0b"" 异常本文地址:http://blog.csdn.net/caroline_wendy"No source available for "__chkstk_ms() at 0x401f0b"" 异常, 在Eclipse CDT, GCC 4.8.1调试(Debug)出现.原因: 创建数组过大原创 2014-07-17 19:21:32 · 6969 阅读 · 0 评论 -
C++ - 使用copy函数打印容器(container)元素
使用copy函数打印容器(container)元素本文地址:http://blog.csdn.net/caroline_wendyC++可以使用copy函数输出容器(container)中的元素, 可以代替for循环.头文件:#include #include 格式:std::copy(cont.begin(), cont.end(),std::ostream_iterator(std::c原创 2014-06-17 08:44:56 · 5598 阅读 · 0 评论 -
C++ - 复制容器(container)的元素至另一个容器
复制容器(container)的元素至另一个容器本文地址: http://blog.csdn.net/caroline_wendyC++复制容器(container)元素, 可以使用标准库(STL)的copy()和copy_n()函数.函数样式: OutputIterator copy (InputIterator first, InputIterator last, OutputIterator原创 2014-06-17 08:36:47 · 9583 阅读 · 0 评论 -
C++ - 同步读写文本 代码(C++)
同步读写文本 代码(C++)本文地址:http://blog.csdn.net/caroline_wendy写程序: 每个2秒写入文本一个数字;读程序: 每个5秒读入文本最后一个数字;写程序代码:#include #include #include using namespace std;int main (void) { ofstream ofs("D:/w.txt");原创 2014-06-08 20:07:47 · 3283 阅读 · 0 评论 -
C++ - 删除文本的最后一行 代码(C++)
删除文本的最后一行 代码(C++)本文地址:http://blog.csdn.net/caroline_wendy读取文本的每行("\n"), 存储入数组vector, 输出时, 少输出最后一行, 即可.代码:/* * main.cpp * * Created on: 2014.06.08 * Author: Spike *//*vs 2012*/#include原创 2014-06-08 19:46:14 · 8708 阅读 · 0 评论 -
C++ - RTTI(RunTime Type Information)运行时类型信息 详解
RTTI(RunTime Type Information)运行时类型信息 详解本文地址:http://blog.csdn.net/caroline_wendy/article/details/24369987RTTI, RunTime Type Information, 运行时类型信息, 是多态的主要组成部分,通过运行时(runtime)确定使用的类型, 执行不同的函数,复用(reuse)接口.dynam原创 2014-04-23 16:07:46 · 4834 阅读 · 1 评论 -
C++ - 模板函数需要类型转换时使用友元(friend)模板函数
模板函数需要类型转换时使用友元(friend)模板函数本文地址:http://blog.csdn.net/caroline_wendy/article/details/24357301非模板函数参考:http://blog.csdn.net/caroline_wendy/article/details/24309293模板函数的类型转换, 涉及到模板参数的确定问题.从int或double类型, 无法隐原创 2014-04-23 12:30:31 · 3962 阅读 · 1 评论 -
C++ - 使用非成员函数(non-member)处理函数的所有参数都需要类型转换
使用非成员函数(non-member)处理函数的所有参数都需要类型转换本文地址:http://blog.csdn.net/caroline_wendy/article/details/24309293有些函数, 所有参数都需要使用类型转换, 比如乘法, 写一个有理数类Rational, 需要执行乘法操作:函数满足: Rational = Rational*double; Rational = double*Rat原创 2014-04-22 15:11:46 · 5568 阅读 · 1 评论 -
C++ - 派生类强制转换为基类
派生类强制转换为基类本文地址:http://blog.csdn.net/caroline_wendy/article/details/24268821在多态的使用时,派生类的指针或引用可以转换为基类的指针或引用, 即基类的指针可以指向派生类的基类部分;Base* b = Derived* d;b和d指向的内容是相等的, b == d, 因为之间有一个隐式转换即 b == (Base*)d;b和d的地址是不原创 2014-04-21 19:37:54 · 7153 阅读 · 0 评论 -
C++ - 模板类使用成员函数模板(member function template)处理隐式(implicit)转换
模板类使用成员函数模板(member function template)处理隐式(implicit)转换本文地址:http://blog.csdn.net/caroline_wendy/article/details/24233693指针支持隐式转换(implicit conversion), 在动态绑定中,派生类指针可以转换为基类指针.但是模板的实例化(instantiations)之间, 是单独存在的,原创 2014-04-21 10:26:44 · 4237 阅读 · 0 评论 -
C++ - 类的虚函数\虚继承所占的空间
类的虚函数\虚继承所占的空间本文地址:http://blog.csdn.net/caroline_wendy/article/details/24236469char占用一个字节, 但不满足4的倍数时, 会进行数据对齐, 使用4的倍数的字节(byte).无论是虚函数还是虚继承, 都需要将指针存储在虚函数表(virtual function table), 占用4个字节.继承会继承基类的数据, 和虚函数表,原创 2014-04-21 10:54:50 · 6538 阅读 · 3 评论 -
C++ - "scoped_array" 的 详解
"scoped_array" 的 详解本文地址:http://blog.csdn.net/caroline_wendy/article/details/24174207参考:http://www.boost.org/doc/libs/1_54_0/libs/smart_ptr/scoped_array.htmThe scoped_array class template stores a pointer t原创 2014-04-20 09:40:20 · 5134 阅读 · 0 评论 -
C++ - 容器(container)的erase()函数
容器(container)的erase()函数 本文地址: http://blog.csdn.net/caroline_wendy/article/details/23996013 容器(container)的erase()函数, 是删除一个元素, 会移动迭代器的指针, 指向下一个元素;迭代器(iterator)是一种指针, 赋值是传递的地址, 指向相同的元素; 代码:...原创 2014-04-18 09:50:39 · 4141 阅读 · 0 评论 -
C++ - 派生类访问模板化基类(templatized base class)的命名
派生类访问模板化基类(templatized base class)的命名本文地址:http://blog.csdn.net/caroline_wendy/article/details/23993691派生类继承模板化基类的成员函数, 默认是无法访问, 模板化基类的命名.原因是模板的定制化有可能取消某些函数, 为了能在编译期检测出错误, 所以默认无法访问.派生类访问模板化基类, 包含三种方法:原创 2014-04-18 09:23:24 · 5475 阅读 · 0 评论 -
C++ - 默认复制构造函数 执行 浅拷贝
默认复制构造函数 执行 浅拷贝本文地址:http://blog.csdn.net/caroline_wendy/article/details/23941807C++, 会默认生成一个复制构造函数, 当类中出现指针时, 复制会执行浅拷贝, 即只复制指针的地址, 不会复制数据;所以在类中, 使用指针时, 需要注意; 如果想使用深拷贝, 可以添加复制构造函数.以下代码, 如果不添加复制构造函数, 则会运行原创 2014-04-17 16:29:50 · 6417 阅读 · 0 评论 -
C++ - 模板(template)中typename的使用方法
模板(template)中typename的使用方法http://blog.csdn.net/caroline_wendy/article/details/23910709声明template参数时, 前缀关键字class和typename可以互换;使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用.从属名称(dependent names): 模板(templat原创 2014-04-17 10:31:57 · 47003 阅读 · 1 评论 -
C++ - 类的成员变量 声明顺序 与 初始化顺序 相同
类的成员变量 声明顺序 与 初始化顺序 相同本文地址:http://blog.csdn.net/caroline_wendy/article/details/23845027类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行;否则, 在变量之间交替赋值时, 会产生, 未初始化的变量去赋值其他变量;同时GCC, 也会发出警告, 如:'class::m_原创 2014-04-16 14:40:58 · 5122 阅读 · 0 评论 -
C++ - 通过私有(private)继承复用类实现工厂函数(factory function) 详解
通过私有(private)继承复用类实现工厂函数(factory function) 详解版权归C.L.Wang所有, 禁止转载, 如有需要, 请站内联系.本文地址:http://blog.csdn.net/caroline_wendy/article/details/23750515通过接口类(interface class), 实现工厂函数, 可以复用(reuse)已有类,重写实现接口.如原创 2014-04-15 12:26:41 · 3463 阅读 · 0 评论 -
C++ - 虚继承(virtual inheritance) 详解
虚继承(virtualinheritance) 详解本文地址:http://blog.csdn.net/caroline_wendy/article/details/23739633在多重继承(multiple inheritance)中, 可能出现多个基类继承自同一个基类, 即"菱形继承", 会导致最顶层的基类, 被复制多次;可以采用虚继承(virtual inheritance)的方式, 使派生类(deri原创 2014-04-15 10:09:34 · 5812 阅读 · 0 评论 -
C++ - 默认生成的成员函数
默认生成的成员函数本文地址: http://blog.csdn.net/caroline_wendy/article/details/23735723C++默认生成4个成员函数.默认构造函数(default constructor), 析构函数(destructor), 复制构造函数(copy constructor), 赋值函数(assignment);其中析构函数, 会自动析构C++的基本类型数据."=defa原创 2014-04-15 09:17:28 · 3149 阅读 · 1 评论 -
C++ - 多重继承(multiple inheritance)歧义(ambiguous)
多重继承(multiple inheritance)歧义(ambiguous)本文地址: http://blog.csdn.net/caroline_wendy/article/details/23737553多重继承, 如果基类(base class)的成员函数名称相同,重载(overload)函数调用, 会忽略public和private, 选取最佳的匹配函数,匹配度相同, 则会造成歧义, 产出错误:reque原创 2014-04-15 09:39:20 · 8411 阅读 · 0 评论 -
C++ - 虚函数(virtual function)缺省参数的异常表现 及 正确使用方法
虚函数(virtual function)缺省参数的异常表现 及 正确使用方法本文地址:http://blog.csdn.net/caroline_wendy/article/details/23679691避免定义基类(base class)虚函数的缺省参数, 如果基类虚函数包含缺省参数, 派生类不要重新定义, 会产生异常;虚函数(virtual)是动态绑定(dynamically bound),缺省参数是静态绑定(原创 2014-04-14 15:20:01 · 5263 阅读 · 0 评论 -
C++ - 使用复合(composition) 代替 private继承
使用复合(composition) 代替 private继承本文地址:http://blog.csdn.net/caroline_wendy/article/details/23424167复合方式(composition)和 private继承, 都能表示, 根据某个类实现出新的类的形式, 即通过使用protected成员, 和重写virtual函数.优先选择复合方式. 原因:1. 复合方式, 可以实现重写原创 2014-04-11 09:55:01 · 4216 阅读 · 0 评论 -
C++ - 空白基类最优化(empty base optimization, EBO) 详解
空白基类最优化(empty base optimization, EBO) 详解本文地址:http://blog.csdn.net/caroline_wendy/article/details/23423247EBO, empty base optimization, 即空白基类最优化, 可以使派生类节省空间;但是如果使用复合(composition)的方式, 因为定义了新对象, 所以编译器会进行填充(padding原创 2014-04-11 09:40:17 · 3506 阅读 · 0 评论 -
C++ - 阻止派生类(derived class)重新定义虚函数(final&sealed)
阻止派生类(derived class)重新定义虚函数(final&sealed)版权所有, 禁止转载, 如有需要, 请站内联系.本文地址:http://blog.csdn.net/caroline_wendy/article/details/23421921阻止派生类重新定义虚函数, 在java和C#中可以很简单的实现(finale&sealed),但在C++中则需要使用public继承+复合(com原创 2014-04-11 09:23:59 · 3835 阅读 · 0 评论 -
C++ - 错误"error: 'off64_t' does not name a type"
错误"error: 'off64_t' does not name a type"本文地址:http://blog.csdn.net/caroline_wendy/article/details/23419303MinGW的bug,使用-std=c++11, 有可能出现, 修改{MinGW dir}/include/io.h文件,使用:__CRT_INLINE _off64_t lseek64 (int, _原创 2014-04-11 08:33:55 · 10576 阅读 · 0 评论 -
C++ - 标准异常报错(call to 'std::exception::exception(const char [n])')
标准异常报错(call to 'std::exception::exception(const char [n])')本文地址: http://blog.csdn.net/caroline_wendy参考: http://www.cplusplus.com/forum/beginner/107744/当使用"throw原创 2014-04-10 10:40:23 · 5513 阅读 · 0 评论 -
C++ - 接口继承(interface) 和 实现继承(implementation) 详解
接口继承(interface) 和 实现继承(implementation) 详解本文地址: http://blog.csdn.net/caroline_wendy/article/details/22745017继承接口和实现, 主要包含三种方式:1. 只继承接口, 纯虚函数;2. 继承接口和实现, 允许覆写(override), 虚函数;3. 继承接口和实现, 不允许覆写(override), 非虚函数;原创 2014-04-01 17:44:19 · 18801 阅读 · 0 评论 -
C++ - explicit在构造函数的使用 及 详解
explicit在构造函数的使用 及 详解本文地址: http://blog.csdn.net/caroline_wendy/article/details/22727823最近又到了招聘的季节, C++被问的问题就特别多, 最近同学问我explicit的含义, 我说直接看我的blog吧.下面就是explicit的详解.explicit的主要用法就是放在单参原创 2014-04-01 13:51:08 · 14681 阅读 · 0 评论 -
C++ - 判断文件夹(folder)是否存在(exist)
判断文件夹(folder)是否存在(exit)本文地址:http://blog.csdn.net/caroline_wendy/article/details/21734915写入程序, 需要在文件夹中写入数据, 如果文件夹不存在, 则无法写入, 在程序入口需要判断;由于属于系统层, Windows的两种解决方法.1.GetFileAttributesA()函数DWORD d = GetFileAt原创 2014-03-21 18:10:10 · 27644 阅读 · 0 评论 -
C++/面试 - 四种类型转换(cast)的关键字 详解 及 代码
四种类型转换(cast)的关键字 详解 及 代码本文原创, 禁止转载, 如有需要, 请站内联系.本文地址: http://blog.csdn.net/caroline_wendy/article/details/19042529C++中常见的面试题.题目: 关于C++中, 四种类型转换的关键字, 的详解, 也可以给出代码, 判断输出 或 判断哪些代码有误.答案及范例如下:四种关键字: con原创 2014-02-10 17:08:59 · 6882 阅读 · 1 评论 -
C++ - 虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序
虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序 在多重继承的时候,构造顺序是 虚继承按顺序优先, 再次是其他按顺序, 由基类至派生类;析构顺序正好相反; 代码如下:/* * cppprimer.cpp * * Created on: 2014.1.10 * Author: Spike原创 2014-01-21 09:55:51 · 3554 阅读 · 0 评论 -
C++ - 虚继承(virtual inheritance)
虚继承(virtual inheritance)本文地址: http://blog.csdn.net/caroline_wendy虚继承主要是避免基类重复被继承, 导致歧义性, 使用虚基类(virtual base class)继承, 可以使派生对象只包含一份基类文件.如果不使用虚继承, 则派生类需要提供一份自己的示例版本, 参见: http://blog.csdn原创 2014-01-10 17:30:15 · 2743 阅读 · 0 评论 -
C++ - 多重继承(multiple inheritance) 的 名称歧义(name ambiguity)
多重继承(multiple inheritance) 的 名称歧义(name ambiguity)本文地址: http://blog.csdn.net/caroline_wendy/article/details/18077235在多重继承中, 如果多个基类包含相同名字的成员函数, 则在派生类使用时, 容易发生歧义, 会导致出错;解决方法是: 在派生类中重写基类方法, 覆盖原方法, 再指定基类范围(scope), 确定使用那个基类的原创 2014-01-10 10:54:09 · 3660 阅读 · 0 评论 -
C++ - 异常类(exception classes) 的 详解 及 代码
C++ - 异常类(exception classes) 的 详解 及 代码本文地址:http://blog.csdn.net/caroline_wendy/article/details/17498665异常类(exception classes)包含4种基类,bad_cast, bad_alloc,runtime_error, logic_error;runtime_error: 错误只有当程序运行时,原创 2013-12-23 08:27:38 · 6915 阅读 · 0 评论 -
C++ - 随机访问(random access) 流(stream) 的 详解 及 代码
随机访问(random access) 流(stream) 的 详解 及 代码本文地址: http://blog.csdn.net/caroline_wendy/article/details/17378303随机访问流, 使用mark(标记)标注流的位置, 包含两种方法tell和seek;tell, 是返回流mark的位置, 包含g和p两种版本.g表示get, 指输入流; p表示put, 指输出流;seek,原创 2013-12-17 15:58:38 · 4337 阅读 · 0 评论 -
C++ - 格式化输入输出(formatted input and output) 的 详解 及 代码
格式化输入输出(formatted input and output) 的 详解 及 代码本文地址:http://blog.csdn.net/caroline_wendy/article/details/17359659格式化输入输出, 是在的头文件中, 控制格式;如果修改输入输出的格式, 会影响之后的格式, 需要重置, 一般在格式类型之前添加"no", 即可;支持, 8进制, 16进制, 默认10进制, 以及大原创 2013-12-16 20:06:30 · 5165 阅读 · 0 评论 -
C++ - 随机数生成器(random-number generator) 的 详解 及 代码
随机数生成器(random-number generator) 的 详解 及 代码本文地址:http://blog.csdn.net/caroline_wendy随机数, C语言的函数是rand(), C++则是随机数生成器(random-number generator) = 分布对象(distribution object) + 引擎(engine);使函数每次生原创 2013-12-14 18:11:26 · 15862 阅读 · 0 评论 -
C++ - 正则表达式(regex) 替换(replace) 的 详解 及 代码
正则表达式(regex) 替换(replace) 的 详解 及 代码本文地址:http://blog.csdn.net/caroline_wendy/article/details/17321639正则表达式, 可以替换(replace)匹配的字符串, 使用regex_replace()函数, 需要指定替换的格式;也可以提供参数, 进行特定的输出, 替换格式的命名空间原创 2013-12-14 17:29:42 · 29575 阅读 · 3 评论