序:C++的一个主要目标是促进代码重用,其中包含公有继承、包含、使用私有或保护继承
一,包含对象成员的类
1)valarray类简介 #include <valarray>
作用:处理数值,支持数值中所有元素的值相加,找最大值,最小值
用法:vallarray <int> a; //数组 a size=0
vallarray <double> b(10); //数组 b size=10
vallarray <double> c(10,8); //数组 c size=8 每个元素设置为 10
int s={2,3,4,5,6}; vallarray <double> d(s,3); //数组d 取s的前三个元素
2)student 类设计
1)typedef:用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。
typedef double double_a; //为已知类型 double起别名 double_a
typedef struct node{
char *name;
int age;
} *Node;
typedef valarray<double> ArrayDb;//定义了一个double数组 的别名
2)explicit : 关闭构造函数的隐式转换
explicit student(int n):name("NULLy"),scores(n){};
如果 student dod("xiaotian",10);//定义对象 名字为“xiaotian" 数组有5个元素
dod=5;//重新定义dod对象 名字为空,数组有5个元素
如果没有explicit 则调用student(5); 将5转化为一个临时student 对象
二,私有继承:has-a关系
1)class student : private string, private valarray<double>
不同种类的继承
特征 |
公有继承 |
保护继承 |
私有继承 |
共有成员变成 |
派生类的公有成员 |
派生类的保护成员 |
派生类的私有成员 |
保护成员变成 |
派生类的保护成员 |
派生类的保护成员 |
派生类的私有成员 |
私有成员变成 |
派生类的私有成员 |
派生类的私有成员 |
派生类的私有成员 |
能否隐式向上转换 |
是 |
是 |
是 |
使用using 重新定义访问权限,让私有继承中的方法也可以调用
class student :private string,private valarray<double>
{
public:
using std::valarray::mix; //using 声明只使用 成员名,没有圆括号
using std::valarray::min;
}
三,多重继承
1)singer类和waiter类都继承了一个worker组件,如果新建一个类singerwaiter,
class singerwaiter :public singer,public waiter{};
则singerwaiter包含两个worker组件,这将引起问题。例如,通常可以将派生类的对象的地址赋给基类指针但是现在回出现二义性。
singerwaiter ed;
worker *pw = &ed;//这 会出现二义性
解决办法:
1>worker *pw=(waiter *)&ed;
worker *pw=(singer *)&ed;
2>虚基类
class singer:virtual public worker{};
class waiter:public virtual worker{};
这时 class singerwaiter:public singer,public worker;
2)C++在基类是虚拟的时候,禁止信息通过中间类自动传递给基类
3)singerwaiter ss; ss.show();//引起二义性
ss.singer::show();//解决问题
四,类模板
1)template <class Type> //template 告诉编译器,将要定义一个模板。class 是类型名,Type 是该变量名
2)简单的模板使用
说明:1)模板代码不能修改参数值,不能使用参数地址。所以不能使用n++和&n这种表达式
2)递归使用模板:Array<Array<int , 5>,10> a;//包含10个元素的数组,每个元素是包含5个元素的数组
int a[10][5]; //含有十行,每行包含5个元素
3)使用多个参数:template <class T1, class T2> //声明
class pa
{
T1 a;
T2 b;
};
pa<string ,int>("tianshuai",1);
复习题:虚基类与非虚基类之间的区别
如果两个继承路线有相同的祖先,则类中包含两个祖先的拷贝,而将基类设置成虚的则可以避免这种情况。
分享到:
相关推荐
4. 函数:函数是C++中可重用代码的基本单元。练习题会涵盖函数的声明、定义、参数传递和返回值。读者还将学习如何使用内置函数,如sqrt()用于计算平方根,以及自定义函数。 5. 数组:数组是存储相同类型元素的集合...
最后,第五版还涉及了C++11和C++14的新特性,如lambda表达式、右值引用、auto关键字、强类型枚举(enum class)、统一初始化等,这些现代C++特性极大地提升了代码的简洁性和可读性。 总之,《C++ Primer (Fifth ...
书中详细介绍了如何设计和使用类,以及如何通过继承和多态来实现代码的重用和扩展。这部分内容对于理解C++的面向对象编程思想至关重要。 此外,C++ Primer 5th还详细阐述了模板这一强大的工具,包括函数模板、类...
2. **函数**:C++中的函数用于封装可重用的代码。理解函数的声明、定义、参数传递、返回值等概念,以及如何使用函数模板实现泛型编程。 3. **类与对象**:C++的核心是面向对象编程,需要理解类(class)的构造和...
在C++的世界里,第五版的《C++ Primer》尤其引人注目,因为它不仅更新了对C++11、C++14和C++17标准的支持,还深入探讨了现代C++编程的最佳实践。书中首先引导读者了解C++的基本语法,包括变量声明、运算符、流程控制...
在第四版中,作者们对C++11标准进行了全面的更新,涵盖了现代C++的新特性,使学习者能够掌握最新的编程技术。 本书主要分为以下几个部分: 1. **基础篇**:首先介绍了C++的基本语法,包括数据类型、运算符、控制...
《C++ Primer》是C++编程领域的一本经典著作,第五版更是全面更新,涵盖了C++11和C++14的新特性。本书是为那些希望深入理解和掌握C++编程语言的读者准备的,无论你是初学者还是有一定经验的程序员,都能从中受益。 ...
2. **函数**:C++中的函数是代码组织和重用的重要方式。书中详细讲解了函数的定义、调用、参数传递、返回值以及重载函数的概念。 3. **类与对象**:C++的核心特性之一是面向对象编程。书中详细介绍了类的定义,包括...
3. **函数**:函数是C++中的可重用代码块,用于封装逻辑。学习如何定义、调用函数,以及理解参数传递机制(值传递和引用传递)。 4. **数组与向量**:数组是固定大小的数据集合,而std::vector是动态大小的容器,...
《C++ Primer中文第四版》是一本广受欢迎的C++编程教材,专为初学者和有一定经验的程序员设计。本书详细介绍了C++语言的核心概念、语法以及标准库,旨在帮助读者掌握C++编程技巧,提升编程能力。第四版在原有基础上...
3. **模板**:C++ Primer Plus会介绍模板的使用,包括函数模板和类模板,它们允许编写可重用的代码以处理不同类型的数据。 4. **STL(Standard Template Library)**:C++标准库中的容器(如vector, list, set, map...
《C++ Primer》的第三版特别关注了C++98标准,并且对后来的C++11和C++14标准有所提及。随着C++标准的不断发展,了解这些新特性对于现代C++编程至关重要,比如智能指针、右值引用、lambda表达式和并发编程的支持。 ...
3. **模板**:C++的泛型编程主要通过模板实现,书中的这部分内容讲解了函数模板和类模板,以及模板特化和部分特化等高级技术,使读者能够编写出可重用且类型安全的代码。 4. **STL(标准模板库)**:STL是C++的一个...
4. **函数基础**:C++中的函数是代码重用的关键,第二章可能会介绍函数的声明、定义和调用。这可能包括主函数(main)的使用,参数传递,以及返回值。 5. **输入输出**:C++使用标准输入输出库(iostream)进行数据...
《C++ Primer 第五版》是由Stanley B. Lippman、Josée Lajoie和Barbara E. Moo三位作者合著的经典C++教程。在第11章中,主要探讨了C++中的模板和泛型编程。这些习题答案涵盖了这一章的重要概念,包括函数模板、类...
《C++ Primer 中文版第五版 习题代码实现 第一章》是一个针对初学者和有一定基础的C++程序员的学习资源,旨在通过实践加深对C++语言的理解。本章节主要涵盖了C++的基础知识,包括变量、基本数据类型、运算符、输入/...
书中的模板章节详细解释了函数模板和类模板的使用,以及模板元编程的概念,帮助读者创建可重用且类型安全的代码。 异常处理是C++中错误处理的一种机制,通过try-catch块来捕获和处理运行时错误。本书详细讲解了何时...
在C++ Primer第三版中,首先讲解了C++的基础知识,包括基本语法、变量、运算符、控制流(如条件语句和循环)以及函数的使用。这些内容是任何编程语言学习的基石,让读者能够理解程序的基本结构和逻辑。 接着,书中...
4. 函数:函数是C++中可重用代码的基本单元,包括函数声明、定义、调用和参数传递。 三、面向对象编程 1. 类与对象:类是C++中定义数据结构和操作的蓝图,对象是类的实例,封装了数据和行为。 2. 构造函数与析构...