Welcome 微信登录

首页 / 软件开发 / C++

C++中函数模板(function template)返回值

C++中函数模板(function template)返回值

C++中函数模板(function template)返回值2014-11-20函数模板的返回值也可以定义为模板参数(template parameter), 但是由于无法推导(deduce), 需要显式(explicit)指定;由于显式指定的顺序是从左至右, 返回值参数尽量放在左面,其余函数参数可以通过传入实参(argument)进行推导;也可以提供由其他参数推导出的返回值类型, 需要使用拖尾返回类型(trailing return type);使用de...
C++中成员函数(member function)模板(template) 详解

C++中成员函数(member function)模板(template) 详解

C++中成员函数(member function)模板(template) 详解2014-11-20成员模板(member template) 既可以在普通类(ordinary class), 也可以在类模板(class template);在普通类中, 在使用成员函数时, 不用提供模板参数, 函数可以根据使用的参数,自动推导(deduce)模板实参(template argument)对应模板形参(template parameter);在类模板中, 成...
C++中类模板(class template)友元(friend) 的全部六种形式

C++中类模板(class template)友元(friend) 的全部六种形式

C++中类模板(class template)友元(friend) 的全部六种形式2014-11-20类模板(class template)的友元(friend)和普通类的友元, 有很多区别,主要原因是类模板包含模板参数(template parameter), 就会导致友元和类模板有很多匹配形式;主要包含六种形式:1. 类 - 友元(friend): "模板参数是当前类"的类模板;2. 类 - 友元: "模板参数任意&quo...
C++中复制(copy) 和 虚复制(virtual copy) 的 区别

C++中复制(copy) 和 虚复制(virtual copy) 的 区别

C++中复制(copy) 和 虚复制(virtual copy) 的 区别2014-11-20在继承过程中, 需要区分复制(copy)和虚复制(virtual copy);在派生类转换为基类时, 复制(copy)有可能切掉(sliced down)派生对象的派生部分, 只保留基类部分, 使派生类的虚函数无法使用;为了避免此情况, 如果传入是对象, 则可以定义虚函数clone, 使派生类继承此虚函数, 再传入容器, 可以重载方法;另外, 如果传入是实参, 使...
C++中派生类的构造和析构顺序详解

C++中派生类的构造和析构顺序详解

C++中派生类的构造和析构顺序详解2014-11-20派生类因为要调用基类, 所以构造和析构都是按照一定顺序进行;构造的顺序是: 基(base) -> 派生(derived);即先构造基类, 再构造派生类;因为 基类 是独立于派生类的, 即不会调用派生类中的对象, 所以应该先被生成;如果派生类先于基类生成, 则因为无法调用基类资源, 可能生成失败;析构的顺序是: 派生(derived) -> 基(base); 即先释放派生类, 再释放基类;因为...
C++中如何在容器中使用继承和虚函数

C++中如何在容器中使用继承和虚函数

C++中如何在容器中使用继承和虚函数2014-11-20容器不支持混合类型, 如果直接把派生类对象, 存入基类容器中, 则无法使用派生-基转换(derived-base conversion);因为转换只能发生在指针和引用 过程中, 不能发生在 对象直接赋值, 如果是直接转换, 则会产生截断(sliced down);即派生类部分被切除, 只留下基类部分; 所以存入容器中的派生类 输出为基类部分 的虚函数;如果想在容器中, 进行继承, 则需要使用指针, 包...
控制共享库的符号可见性(一) 符号可见性简介

控制共享库的符号可见性(一) 符号可见性简介

控制共享库的符号可见性(一) 符号可见性简介2014-11-27 IBM Liu Zhipeng什么是符号和符号可见性符号是谈及对象文件、链接等内容时的基本术语之一。实际上,在 C/C++ 语言中,符号是很多用户定义的变量、函数名称以及一些名称空间、类/结构/名称等的对应实体。例如,当我们定义非静态全局变量或非静态函数时,C/C++ 编译器就会在对象文件中生成符号,这些符号对于链接器(linker)确定不同模块(对象文件、动态共享库、可执行文件)是否会共享...
C++中虚函数(virtual function) 的 使用范围

C++中虚函数(virtual function) 的 使用范围

C++中虚函数(virtual function) 的 使用范围2014-11-27虚函数(virtual function) 在 基函数(base function) 和 派生函数(derived function) 之间可以覆写(override);如果派生函数有与虚函数同名的函数, 则会隐藏虚函数, 但是虚函数还会在;由于派生对象和基对象可以转换, 可以只使用基对象部分; 派生对象的虚函数会覆写基对象的虚函数;代码:/** cppprimer.cpp...
C++中的纯虚函数(pure virtual) 和抽象基类(abstract base class)

C++中的纯虚函数(pure virtual) 和抽象基类(abstract base class)

C++中的纯虚函数(pure virtual) 和抽象基类(abstract base class)2014-11-27纯虚函数(pure virtual), 是一个基类中的方法, 仅仅是声明, 而不包括定义, 是一个泛化概念(general concept);是把相应的虚函数, 末尾添加"=0",该虚函数就变为纯虚函数, 可以不用添加定义;如果是其他虚函数, 即使不使用, 也必须定义(define);包含纯虚函数的基类, 是抽象基类(...
C++中使用编译器常量代替预处理常量详解

C++中使用编译器常量代替预处理常量详解

C++中使用编译器常量代替预处理常量详解2014-11-27对于预处理的单纯常量, 可以使用const类型进行代替;在面向对象编程中, 类内的常量, 可以使用静态const成员代替,注意类内(in-class), 静态const成员只允许使用整型常量进行赋值, 如果是其他类型, 是在类内声明, 类外定义的方式;也可以使用"enum hack", 提供const的作用, 并且给内置(built-in)数组声明;预处理的函数调用存在很多问题...
C++中的继承(inheritance) 和动态绑定(dynamic binding) 简介

C++中的继承(inheritance) 和动态绑定(dynamic binding) 简介

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标准

linux下安装或升级GCC 4.8以支持C++11标准

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 >>