易网时代-编程资源站
Welcome
首页
/
软件开发
/
C++
C++中函数模板(function template)返回值
2017-02-06
16
C++中函数模板(function template)返回值2014-11-20函数模板的返回值也可以定义为模板参数(template parameter), 但是由于无法推导(deduce), 需要显式(explicit)指定;由于显式指定的顺序是从左至右, 返回值参数尽量放在左面,其余函数参数可以通过传入实参(argument)进行推导;也可以提供由其他参数推导出的返回值类型, 需要使用拖尾返回类型(trailing return type);使用de...
C++中如何深度搜索遍历文件夹
2017-02-06
16
C++中如何深度搜索遍历文件夹2014-11-20深度优先搜索遍历文件夹所有文件, 由于使用windows的函数, 必须要使用C语言;注意字符集的问题,使用"#undef UNICODE", 屏蔽因字符集所产生的问题;使用vector<string>存储所有文件名, 因为要递归使用, 所以需要设置为静态,返回shared_ptr的指针代码如下:/****************************************...
C++中智能指针(smarter pointer)自定义删除器(deleter) 的方法
2017-02-06
16
C++中智能指针(smarter pointer)自定义删除器(deleter) 的方法2014-11-20智能指针包含两种"shared_ptr"和"unique_ptr", 由于两种指针的实现方式不同, 所以传递删除器的方式也不同;"shared_ptr"的传递删除器(deleter)方式比较简单, 只需要在参数中添加具体的删除器函数名, 即可; 注意是单参数函数;"unique_p...
C++中成员函数(member function)模板(template) 详解
2017-02-06
16
C++中成员函数(member function)模板(template) 详解2014-11-20成员模板(member template) 既可以在普通类(ordinary class), 也可以在类模板(class template);在普通类中, 在使用成员函数时, 不用提供模板参数, 函数可以根据使用的参数,自动推导(deduce)模板实参(template argument)对应模板形参(template parameter);在类模板中, 成...
C++中类模板(class template)友元(friend) 的全部六种形式
2017-02-06
15
C++中类模板(class template)友元(friend) 的全部六种形式2014-11-20类模板(class template)的友元(friend)和普通类的友元, 有很多区别,主要原因是类模板包含模板参数(template parameter), 就会导致友元和类模板有很多匹配形式;主要包含六种形式:1. 类 - 友元(friend): "模板参数是当前类"的类模板;2. 类 - 友元: "模板参数任意&quo...
C++中类模板(class template) 详解
2017-02-06
16
C++中类模板(class template) 详解2014-11-20类模板(class template)需要添加模板参数(template parameter), 即最前面添加"template <template T>";把所有需要使用模板类型的位置, 使用"T"代替; 使用时需要填加"Class<T>",指定模板参数;在定义类的成员函数(member functi...
C++中函数模板(function template) 详解
2017-02-06
16
C++中函数模板(function template) 详解2014-11-20C++的模板(template)是泛型编程(generic programming)的基础;面向对象编程 是 运行(run time)时 知道类型(type); 泛型编程 是编译(compilation) 知道类型;函数模板(function template)包含模板参数列表(template parameter list);每个参数类型之前必须包含关键字typename或c...
C++中指针的引用详解
2017-02-06
15
C++中指针的引用详解2014-11-20指针(*)和引用(&),解引用(*)和取地址(&), 主要观察是在左面, 还是在右面, 如果在左面是前者, 在右面是后者;如果比较多, 则要认真观察, 譬如int*&, 就是指针的引用, 可以避免指针内部元素的复制;还有其他的一些形式, 见下面的例子;代码:/** test.cpp**Created on: 2013.11.12*Author: Caroline*//*eclipse cdt...
C++中多层继承(inheritance) 的使用及示例
2017-02-06
15
C++中多层继承(inheritance) 的使用及示例2014-11-20动态绑定只能应用在虚函数(virtual function), 通过指针(->)或引用(.)调用; 声明基类指针, 绑定派生类对象;可以使用"shared_ptr<Abstract_Base_Class> p(new Derived_Class(para));"的形式, 动态绑定派生的类;可以为动态基类添加一个接口(interface), 使用...
C++中复制(copy) 和 虚复制(virtual copy) 的 区别
2017-02-06
16
C++中复制(copy) 和 虚复制(virtual copy) 的 区别2014-11-20在继承过程中, 需要区分复制(copy)和虚复制(virtual copy);在派生类转换为基类时, 复制(copy)有可能切掉(sliced down)派生对象的派生部分, 只保留基类部分, 使派生类的虚函数无法使用;为了避免此情况, 如果传入是对象, 则可以定义虚函数clone, 使派生类继承此虚函数, 再传入容器, 可以重载方法;另外, 如果传入是实参, 使...
C++中派生类的构造和析构顺序详解
2017-02-06
16
C++中派生类的构造和析构顺序详解2014-11-20派生类因为要调用基类, 所以构造和析构都是按照一定顺序进行;构造的顺序是: 基(base) -> 派生(derived);即先构造基类, 再构造派生类;因为 基类 是独立于派生类的, 即不会调用派生类中的对象, 所以应该先被生成;如果派生类先于基类生成, 则因为无法调用基类资源, 可能生成失败;析构的顺序是: 派生(derived) -> 基(base); 即先释放派生类, 再释放基类;因为...
C++中如何在容器中使用继承和虚函数
2017-02-06
16
C++中如何在容器中使用继承和虚函数2014-11-20容器不支持混合类型, 如果直接把派生类对象, 存入基类容器中, 则无法使用派生-基转换(derived-base conversion);因为转换只能发生在指针和引用 过程中, 不能发生在 对象直接赋值, 如果是直接转换, 则会产生截断(sliced down);即派生类部分被切除, 只留下基类部分; 所以存入容器中的派生类 输出为基类部分 的虚函数;如果想在容器中, 进行继承, 则需要使用指针, 包...
控制共享库的符号可见性(一) 符号可见性简介
2017-02-06
16
控制共享库的符号可见性(一) 符号可见性简介2014-11-27 IBM Liu Zhipeng什么是符号和符号可见性符号是谈及对象文件、链接等内容时的基本术语之一。实际上,在 C/C++ 语言中,符号是很多用户定义的变量、函数名称以及一些名称空间、类/结构/名称等的对应实体。例如,当我们定义非静态全局变量或非静态函数时,C/C++ 编译器就会在对象文件中生成符号,这些符号对于链接器(linker)确定不同模块(对象文件、动态共享库、可执行文件)是否会共享...
C++中const 与 迭代器(iterator) 使用 详解
2017-02-06
17
C++中const 与 迭代器(iterator) 使用 详解2014-11-27迭代器(iterator) 是一种指针类型, 也分const指针本身(地址) 和 const指针所指的值, 两种情况;但是写法和const内置指针有所不同;char * const 相当于 const container<>::iterator; 可以修改指针所指的值, 但不能修改指针的地址;const char * 相当于 container<>::...
C++中虚函数(virtual function) 的 使用范围
2017-02-06
15
C++中虚函数(virtual function) 的 使用范围2014-11-27虚函数(virtual function) 在 基函数(base function) 和 派生函数(derived function) 之间可以覆写(override);如果派生函数有与虚函数同名的函数, 则会隐藏虚函数, 但是虚函数还会在;由于派生对象和基对象可以转换, 可以只使用基对象部分; 派生对象的虚函数会覆写基对象的虚函数;代码:/** cppprimer.cpp...
C++中的纯虚函数(pure virtual) 和抽象基类(abstract base class)
2017-02-06
15
C++中的纯虚函数(pure virtual) 和抽象基类(abstract base class)2014-11-27纯虚函数(pure virtual), 是一个基类中的方法, 仅仅是声明, 而不包括定义, 是一个泛化概念(general concept);是把相应的虚函数, 末尾添加"=0",该虚函数就变为纯虚函数, 可以不用添加定义;如果是其他虚函数, 即使不使用, 也必须定义(define);包含纯虚函数的基类, 是抽象基类(...
C++中使用编译器常量代替预处理常量详解
2017-02-06
16
C++中使用编译器常量代替预处理常量详解2014-11-27对于预处理的单纯常量, 可以使用const类型进行代替;在面向对象编程中, 类内的常量, 可以使用静态const成员代替,注意类内(in-class), 静态const成员只允许使用整型常量进行赋值, 如果是其他类型, 是在类内声明, 类外定义的方式;也可以使用"enum hack", 提供const的作用, 并且给内置(built-in)数组声明;预处理的函数调用存在很多问题...
C++的array数组容器详解
2017-02-06
15
C++的array数组容器详解2014-11-27数组容器, 是存储数组的容器, 是C类型数组的扩充, 可以使用迭代器进行操作;例如"std::array<int, 5>", 需要注意的是, 如果直接进行赋值, "std::array<int, 5> ia = {1, 2, 3, 4, 5}; "在GCC下会有警告: "missing braces around initialize...
C++中的继承(inheritance) 和动态绑定(dynamic binding) 简介
2017-02-06
16
C++中的继承(inheritance) 和动态绑定(dynamic binding) 简介2014-11-27继承(inheritance)和动态绑定(dynamic binding) 是面向对象的重要组成部分, 即继承(inheritance)和多态(polymorphism),可以使 派生类(derived class)拥有 基类(base class) 的接口(interface);派生类可以覆写(override)基类的虚函数(virtual f...
linux下安装或升级GCC 4.8以支持C++11标准
2017-02-06
17
linux下安装或升级GCC 4.8以支持C++11标准2014-11-27C++11标准在2011年8月份获得一致通过,这是自1998年后C++语言第一次大修订,对C++语言进行了改进和扩充。随后各编译器厂商都各自实现或部分实现了C++中的特性。如需查看各编译器对C++11的支持程度,请参看文章:本文主要介绍在Linux系统下,如何升级GCC以支持C++11。目前来看GCC是对C++11支持程度最高最多的编译器,但需要GCC4.8及以上版本。本文使用操作...
<<
151
152
153
154
155
156
157
158
159
160
>>
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图