虚函数指针与模板编程的结合_第1页
虚函数指针与模板编程的结合_第2页
虚函数指针与模板编程的结合_第3页
虚函数指针与模板编程的结合_第4页
虚函数指针与模板编程的结合_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

23/25虚函数指针与模板编程的结合第一部分动态多态性的简介 2第二部分虚函数与虚函数指针 3第三部分类继承与派生类继承 9第四部分模板编程的概念 11第五部分模板函数与类模板 14第六部分虚函数指针与模板编程结合 17第七部分模板编程结合虚函数指针优势 20第八部分虚函数指针与模板编程结合实例 23

第一部分动态多态性的简介关键词关键要点【动态多态性的简介】:

1.动态多态性是一种允许在运行时确定函数调用的具体实现的行为。这种行为使得可以实现函数的重写,即在派生类中可以重新定义基类中的函数,并由基类指针或引用来调用时,会自动调用派生类中的函数实现。

2.动态多态性是通过虚函数指针来实现的。虚函数指针是一个指向函数地址的指针,当调用一个虚函数时,编译器会根据虚函数指针来确定该函数的实际实现。

3.动态多态性是一个非常重要的特性,它使得可以轻松地实现面向对象编程中最重要的特性——继承,并且可以实现函数的重写,从而可以实现更加灵活和可扩展的代码。

【多态性与继承】:

动态多态性的简介

动态多态性,也称运行时多态性,是指在运行时根据对象的实际类型调用相应成员函数的能力。它允许派生类对象在基类指针或引用上执行其独有的行为。

动态多态性的实现依赖于虚函数指针。虚函数指针是一个指向虚函数表的指针,虚函数表中包含了所有虚函数的地址。当通过基类指针或引用调用虚函数时,编译器会根据对象的实际类型找到对应的虚函数表,并将控制权传递给虚函数表中对应的函数。

动态多态性的优点在于,它可以提高代码的可扩展性、可维护性和可复用性。通过使用虚函数,可以轻松地添加或修改派生类,而无需修改基类或其他派生类。

动态多态性的缺点在于,它可能会降低程序的性能。由于虚函数的调用需要额外的间接寻址,因此比直接调用成员函数要慢。另外,虚函数指针也需要占用额外的内存空间。

动态多态性在以下场景中非常有用:

*实现接口或抽象类。接口或抽象类定义了一组纯虚函数,派生类可以实现这些纯虚函数,并提供具体的行为。

*实现继承。继承允许派生类从基类继承成员变量和成员函数,派生类可以重写基类的虚函数,并提供自己的实现。

*实现模板编程。模板编程允许编写通用的代码,这些代码可以在不同的类型上工作。虚函数指针可以帮助模板函数根据对象的实际类型调用相应的方法。

动态多态性是面向对象编程中非常重要的一个概念,它可以帮助我们编写出更灵活、更可扩展的代码。第二部分虚函数与虚函数指针关键词关键要点虚函数与多态性

1.虚函数是一种允许子类覆盖父类方法的方法,从而实现多态性。

2.当调用虚函数时,实际调用的方法取决于对象的实际类型,而不是对象的声明类型。

3.多态性有助于提高代码的可扩展性和可维护性,因为它允许子类扩展父类而无需修改父类。

虚函数指针

1.虚函数指针是指向虚函数的一块内存地址,它存储在对象的虚函数表中。

2.当调用虚函数时,编译器将使用虚函数指针来确定实际调用的方法。

3.虚函数指针的大小通常是4个字节,在32位系统中,它可以指向2^32个不同的函数。

模板编程

1.模板编程是一种允许编写可重用代码的编程技术,通过使用模板参数来定义通用的数据类型和算法。

2.模板可以用于创建泛型类、结构和函数,这些类、结构和函数可以在编译时根据模板参数进行实例化。

3.模板编程有助于提高代码的可重用性和可维护性,因为它允许您编写一次代码,然后根据需要多次使用它。

虚函数指针与模板编程的结合

1.虚函数指针和模板编程可以结合起来创建非常灵活和强大的代码。

2.通过使用模板参数来定义虚函数指针的类型,可以创建一种可以根据对象类型来调用不同方法的通用类或结构。

3.这使得代码更加灵活和可重用,因为它允许您编写一次代码,然后根据需要使用它来处理不同类型的对象。

虚函数指针与模板编程的优势

1.虚函数指针和模板编程的结合可以提高代码的可重用性和可维护性。

2.它可以使代码更加灵活,因为它允许您编写一次代码,然后根据需要使用它来处理不同类型的对象。

3.它可以使代码更加高效,因为它允许编译器一次生成所有可能的方法调用,而不是在运行时动态生成。

虚函数指针与模板编程的局限性

1.虚函数指针和模板编程的结合会增加代码的复杂性,因此可能会使代码更难理解和维护。

2.它可能会导致代码膨胀,因为编译器需要为每个模板实例生成一个单独的代码块。

3.它可能会降低代码的性能,因为编译器需要在运行时解析模板参数。虚函数与虚函数指针

#虚函数

虚函数是C++中一种特殊类型的成员函数,它允许派生类对象调用基类对象的成员函数。虚函数通过使用关键字virtual进行声明。

虚函数的优点是:

*提高了代码的可扩展性。

*增强了代码的可读性和可维护性。

*允许派生类对象调用基类对象的成员函数,从而实现了多态性。

虚函数的缺点是:

*增加了代码的复杂性。

*降低了代码的执行效率。

#虚函数指针

虚函数指针是指向虚函数的指针。虚函数指针存储在对象的虚函数表中。虚函数表是一个包含所有虚函数地址的数组。

虚函数指针的优点是:

*提高了代码的执行效率。

*降低了代码的复杂性。

虚函数指针的缺点是:

*增加了代码的可读性和可维护性。

*降低了代码的可扩展性。

#虚函数与虚函数指针的关系

虚函数与虚函数指针是紧密相关的。虚函数指针指向虚函数,而虚函数指针存储在对象的虚函数表中。虚函数表是一个包含所有虚函数地址的数组。

虚函数与虚函数指针的使用方法:

1.在基类中声明虚函数。

2.在派生类中重写虚函数。

3.使用基类指针或引用来调用虚函数。

虚函数与虚函数指针的使用示例:

```c++

public:

std::cout<<"Base::print()"<<std::endl;

}

};

public:

std::cout<<"Derived::print()"<<std::endl;

}

};

Base*base=newBase();

base->print();//输出:Base::print()

Derived*derived=newDerived();

derived->print();//输出:Derived::print()

Base*base2=newDerived();

base2->print();//输出:Derived::print()

}

```

在上面的示例中,基类Base声明了一个虚函数print(),派生类Derived重写了虚函数print()。在main()函数中,我们创建了三个对象:一个Base对象、一个Derived对象和一个指向Derived对象的Base指针。然后,我们使用基类指针base、派生类指针derived和指向Derived对象的Base指针base2来调用虚函数print()。结果显示,虚函数print()被正确地调用,并且派生类的虚函数被调用。

#模板编程

模板编程是C++中一种强大的编程范式,它允许我们编写代码,这些代码可以被编译成针对不同类型的数据类型进行操作的代码。模板编程通过使用模板来实现。模板是一个参数化的类型,它可以被实例化成不同的类型。

模板编程的优点是:

*提高了代码的可重用性。

*增强了代码的可读性和可维护性。

*允许我们编写代码,这些代码可以被编译成针对不同类型的数据类型进行操作的代码。

模板编程的缺点是:

*增加了代码的复杂性。

*降低了代码的执行效率。

#虚函数指针与模板编程的结合

虚函数指针与模板编程可以结合使用,以提高代码的可扩展性、可读性和可维护性。虚函数指针可以通过模板来实例化,从而允许我们编写代码,这些代码可以被编译成针对不同类型的数据类型进行操作的代码。

虚函数指针与模板编程结合使用的示例:

```c++

template<classT>

public:

std::cout<<"Base::print()"<<std::endl;

}

};

template<classT>

public:

std::cout<<"Derived::print()"<<std::endl;

}

};

Base<int>*base=newBase<int>();

base->print();//输出:Base::print()

Derived<int>*derived=newDerived<int>();

derived->print();//输出:Derived::print()

Base<double>*base2=newDerived<double>();

base2->print();//输出:Derived::print()

}

```

在上面的示例中,我们使用模板类Base和Derived来实现了虚函数print()。Base类声明了一个虚函数print(),派生类Derived重写了虚函数print()。在main()函数中,我们创建了三个对象:一个Base对象、一个Derived对象和一个指向Derived对象的Base指针。然后,我们使用基类指针base、派生类指针derived和指向Derived对象的Base指针base2来调用虚函数print()。结果显示,虚函数print()被正确地调用,并且派生类的虚函数被调用。

虚函数指针与模板编程的结合可以提高代码的可扩展性、可读性和可维护性。虚函数指针可以通过模板来实例化,从而允许我们编写代码,这些代码可以被编译成针对不同类型的数据类型进行操作的代码。第三部分类继承与派生类继承关键词关键要点【类继承与派生类继承】:

1.类继承:类继承是一种面向对象编程中的重要概念,它允许创建一个新类(派生类)来继承另一个类的(基类)属性和方法。通过继承,派生类可以重用基类中的代码,从而避免重复编写。

2.派生类:派生类是继承了另一个类的类。派生类可以继承基类中的所有成员(包括数据成员和成员函数),并可以添加自己的新成员。

3.派生类类型:派生类可以是public、protected或private。public派生类可以访问基类中的所有成员,protected派生类可以访问基类中的protected和public成员,private派生类只能访问基类中的private成员。

【虚函数与虚函数表】:

类继承与派生类继承

一、类继承

类继承是面向对象编程的重要特征之一,它允许一个类从另一个类继承数据成员和成员函数。继承可以创建新的类(派生类),该类具有从其父类继承的数据成员和成员函数。

派生类可以进一步扩展或修改从父类继承的成员,并可以添加新的成员。派生类还继承了父类的所有公开成员,包括公开数据成员和公开成员函数。

二、派生类继承

派生类继承是指派生类从一个或多个父类继承数据成员和成员函数。派生类可以是单继承,也可以是多重继承。

1.单继承

单继承是指派生类只从一个父类继承数据成员和成员函数。单继承是类继承的最简单形式。

2.多重继承

多重继承是指派生类从两个或多个父类继承数据成员和成员函数。多重继承可以使派生类具有多个父类的数据成员和成员函数。

三、继承的类型

继承有多种类型,包括:

1.公共继承

公共继承是指派生类完全继承父类的数据成员和成员函数。派生类中的所有数据成员和成员函数都是公共的。

2.保护继承

保护继承是指派生类只能继承父类的保护成员,而不能继承父类的私有成员。派生类中的所有保护成员都是保护的。

3.私有继承

私有继承是指派生类只能继承父类的私有成员,而不能继承父类的公有成员或保护成员。派生类中的所有私有成员都是私有的。

4.多重继承

多重继承是指派生类从两个或多个父类继承数据成员和成员函数。多重继承可以使派生类具有多个父类的数据成员和成员函数。

四、继承的应用

继承在面向对象编程中有很多应用,包括:

1.代码重用

继承可以使我们重用父类中的代码,从而减少代码量和提高开发效率。

2.扩展父类

继承可以使我们扩展父类,从而创建新的类,该类具有父类的数据成员和成员函数,还可以添加新的成员。

3.实现多态

继承可以帮助我们实现多态,即同一个父类指针可以指向不同的子类对象,从而可以调用不同子类对象的不同方法。

五、虚函数指针与模板编程

虚函数指针与模板编程可以结合使用,以实现更加灵活和强大的编程。虚函数指针允许派生类对象调用父类中的虚函数,而模板编程允许我们创建通用的代码,该代码可以适用于各种数据类型。

通过结合使用虚函数指针与模板编程,我们可以创建出更加灵活和强大的代码,该代码可以适用于各种数据类型,并且可以调用父类中的虚函数。第四部分模板编程的概念关键词关键要点【模板编程的概念】:

1.模板编程是一种代码复用技术,允许您创建通用的代码,该代码可以处理不同类型的数据。

2.模板编程使用模板来定义通用的代码,模板是一组参数化类型,这些参数化类型可以在编译时指定。

3.模板可以用于创建通用的函数、类和结构。

【泛型编程】:

#模板编程的概念

模板编程是利用C++模板机制来编写具有泛型特性的代码。模板机制允许程序员定义通用的代码,这些代码可以根据不同的数据类型进行编译,从而生成不同的代码版本。模板编程的主要优点是代码重用性和灵活性。通过使用模板,程序员可以编写通用的代码,这些代码可以应用于各种不同的数据类型,而无需为每种数据类型编写单独的代码。此外,模板编程可以提高代码的可维护性,因为当需要修改代码时,只需要修改模板代码,而不需要修改所有使用该模板的代码。

模板编程的主要机制是函数模板和类模板。函数模板是通用的函数代码,这些代码可以根据不同的数据类型进行编译,从而生成不同的代码版本。类模板是通用的类代码,这些代码可以根据不同的数据类型进行编译,从而生成不同的类版本。

模板编程的语法与C++中的常规语法非常相似。函数模板和类模板的定义都使用模板关键字。在模板定义中,可以使用类型参数和非类型参数。类型参数指定模板可以应用于哪些数据类型,非类型参数指定模板的某些其他参数,例如函数的返回类型或类的成员变量。

模板编程在C++中得到了广泛的应用。模板编程可以用于编写各种通用的代码,例如容器类、算法、函数对象等。模板编程也可以用于编写通用的类,例如智能指针类、迭代器类等。

模板编程的优点

*代码重用性:模板编程的主要优点是代码重用性。通过使用模板,程序员可以编写通用的代码,这些代码可以应用于各种不同的数据类型,而无需为每种数据类型编写单独的代码。

*灵活性:模板编程提供了很大的灵活性。程序员可以使用模板来编写通用的代码,这些代码可以根据不同的需要进行定制。

*可维护性:模板编程可以提高代码的可维护性。因为当需要修改代码时,只需要修改模板代码,而不需要修改所有使用该模板的代码。

模板编程的缺点

*编译时间:模板编程可能会导致编译时间增加。这是因为模板代码需要在编译时进行实例化,而实例化的过程可能会非常耗时。

*代码复杂性:模板编程可能会导致代码复杂性增加。这是因为模板代码通常比常规代码更难理解和维护。

*可调试性:模板编程可能会导致代码可调试性降低。这是因为模板代码通常很难在调试器中进行调试。

结论

模板编程是C++中一种非常强大的特性。模板编程可以用于编写各种通用的代码,这些代码可以应用于各种不同的数据类型和需求。然而,模板编程也存在一些缺点,例如编译时间长、代码复杂性高和可调试性低等。在使用模板编程时,需要权衡模板编程的优点和缺点,以决定是否使用模板编程。第五部分模板函数与类模板关键词关键要点【模板函数与类模板】:

1.模板函数是一类函数模板,可以在编译时生成多个不同的函数实例。它可以根据实际参数的类型自动推导出函数的具体实现。

2.类模板是一类类模板,可以在编译时生成多个不同的类实例。它可以通过指定不同的模板参数来生成不同类型的类。

3.模板函数和类模板都可以用来实现代码的重用。它们可以减少代码的重复性,提高代码的可维护性。

【类模板与虚函数结合】:

模板函数与类模板

模板函数和类模板是C++中强大的工具,它们允许程序员创建可重用且通用的代码。模板函数可以接受不同类型的参数,而类模板可以创建具有不同数据类型和行为的类。

模板函数

模板函数是一种可以接受不同类型的参数的函数。模板函数的声明中包含一个或多个类型参数,这些类型参数可以是类、结构体、枚举或基本数据类型。例如,下面的代码定义了一个模板函数`max()`,该函数可以返回两个参数中的较大值:

```c++

template<typenameT>

return(a>b)?a:b;

}

```

我们可以通过指定模板参数的类型来调用模板函数。例如,下面的代码调用`max()`函数来返回两个整数中的较大值:

```c++

intx=max<int>(10,20);//x=20

```

类模板

类模板是一种可以创建具有不同数据类型和行为的类的模板。类模板的声明中包含一个或多个类型参数,这些类型参数可以是类、结构体、枚举或基本数据类型。例如,下面的代码定义了一个类模板`List`,该类模板可以创建具有不同数据类型的链表:

```c++

template<typenameT>

public:

List();

~List();

voidadd(Tdata);

Tremove();

private:

Tdata;

Node*next;

};

Node*head;

Node*tail;

};

```

我们可以通过指定模板参数的类型来创建类模板的实例。例如,下面的代码创建一个具有整数数据的链表:

```c++

List<int>list;

list.add(10);

list.add(20);

list.add(30);

intx=list.remove();//x=10

```

模板函数与类模板的结合

模板函数和类模板可以结合使用来创建更强大和通用的代码。例如,我们可以创建一个模板函数来对类模板的元素进行排序。下面的代码定义了一个模板函数`sort()`,该函数可以对类模板`List`的元素进行排序:

```c++

template<typenameT>

//Sorttheelementsofthelistusingasortingalgorithm.

}

```

我们可以通过指定模板参数的类型来调用`sort()`函数。例如,下面的代码对具有整数数据的链表进行排序:

```c++

List<int>list;

list.add(10);

list.add(20);

list.add(30);

sort(list);

intx=list.remove();//x=10

```

总结

模板函数和类模板是C++中强大的工具,它们允许程序员创建可重用且通用的代码。模板函数可以接受不同类型的参数,而类模板可以创建具有不同数据类型和行为的类。模板函数和类模板可以结合使用来创建更强大和通用的代码。第六部分虚函数指针与模板编程结合关键词关键要点【模板与虚函数指针对OOP的影响】:

1.模板与虚函数指针结合,可以有效增强程序的可重用性和可扩展性,降低开发成本,提高开发效率。

2.虚函数指针与模板编程结合,可以实现多态性,便于对不同对象进行统一操作。

3.虚函数指针和模板编程的结合,可以有效提高程序的执行效率。

【虚函数指针和多态性】:

#虚函数指针与模板编程的结合

概述

虚函数指针与模板编程是C++语言中两个强大的特性,它们可以结合使用来实现一些有趣和强大的功能。虚函数指针允许一个类的对象调用另一个类的成员函数,而模板编程允许我们创建通用的函数和类,而不必为每种数据类型都编写单独的版本。当我们把这两个特性结合起来时,就可以创建出可重用的代码,它可以处理各种类型的数据,而无需进行任何修改。

虚函数指针

虚函数指针是一个指向虚函数表的指针,虚函数表是一个包含一个类的所有虚函数的地址的表格。当一个对象调用一个虚函数时,编译器会使用对象的虚函数指针来找到虚函数表,然后从虚函数表中找到虚函数的地址,最后调用虚函数。

模板编程

模板编程是一种允许我们在编写代码时使用类型参数的编程范式。类型参数就像普通的变量,但它们的值是类型,而不是值。这允许我们创建通用的函数和类,而不必为每种数据类型都编写单独的版本。

虚函数指针与模板编程的结合

虚函数指针与模板编程的结合可以用来实现一些非常强大的功能。例如,我们可以创建一个通用函数,它可以对任何类型的对象进行排序。我们可以通过使用模板编程来创建这个函数,并使用虚函数指针来调用对象的比较函数。这样,我们就创建了一个可重用的函数,它可以对任何类型的对象进行排序,而无需进行任何修改。

虚函数指针与模板编程的优点

虚函数指针与模板编程的结合有很多优点,包括:

*可重用性:虚函数指针与模板编程的结合可以用来创建可重用的代码,它可以处理各种类型的数据,而无需进行任何修改。

*灵活性和可扩展性:虚函数指针与模板编程的结合非常灵活和可扩展。我们可以很容易地添加新的数据类型,而无需修改现有的代码。

*性能:虚函数指针与模板编程的结合可以提高程序的性能。通过使用虚函数指针来调用虚函数,我们可以避免在运行时进行类型检查。

虚函数指针与模板编程的应用

虚函数指针与模板编程的结合有很多应用,包括:

*排序算法:我们可以使用虚函数指针与模板编程的结合来创建通用的排序算法,它可以对任何类型的对象进行排序。

*搜索算法:我们可以使用虚函数指针与模板编程的结合来创建通用的搜索算法,它可以搜索任何类型的对象。

*数据结构:我们可以使用虚函数指针与模板编程的结合来创建通用的数据结构,例如链表、栈和队列。

虚函数指针与模板编程的局限性

虚函数指针与模板编程的结合也有其局限性,包括:

*复杂性:虚函数指针与模板编程的结合可能会使代码变得复杂和难以理解。

*性能:虚函数指针与模板编程的结合可能会导致运行时性能下降。

*可移植性:虚函数指针与模板编程的结合可能会导致代码的可移植性下降。

结论

虚函数指针与模板编程的结合是一个强大的工具,它可以用来实现一些非常强大的功能。然而,在使用虚函数指针与模板编程的结合时,也需要注意其局限性。第七部分模板编程结合虚函数指针优势关键词关键要点虚函数指针和模板编程的结合概述

1.虚函数是指在基类中声明,在派生类中实现的函数。它允许派生类对象调用基类中定义的方法,而无需知道派生类的具体类型。

2.模板编程是一种通过使用模板来创建通用代码的编程技术。模板可以参数化类型和值,从而允许您创建可用于各种类型和值的代码。

3.虚函数指针和模板编程可以结合起来创建更灵活和通用的代码。例如,您可以使用模板来创建可以处理任何类型的对象(包括派生类对象)的函数。

虚函数指针和模板编程的优点

1.提高代码的可重用性:虚函数指针和模板编程允许您创建可用于各种类型和值的代码。这可以提高代码的可重用性。

2.提高代码的灵活性:虚函数指针和模板编程使您可以创建更灵活的代码。例如,您可以在不修改代码的情况下将新的派生类添加到程序中。

3.提高代码的性能:虚函数指针和模板编程可以提高代码的性能。例如,您可以使用虚函数指针来避免不必要的函数调用。

虚函数指针和模板编程的局限性

1.可能会导致代码更复杂:虚函数指针和模板编程可能会导致代码更复杂。这是因为您需要考虑如何将虚函数指针和模板编程结合起来才能创建正确的代码。

2.可能会导致代码更难理解:虚函数指针和模板编程可能会导致代码更难理解。这是因为您需要理解虚函数指针和模板编程是如何工作的才能理解代码。

3.可能会导致代码更难调试:虚函数指针和模板编程可能会导致代码更难调试。这是因为您需要考虑如何将虚函数指针和模板编程结合起来才能找到并修复代码中的错误。

虚函数指针和模板编程的应用

1.图形编程:虚函数指针和模板编程可以在图形编程中使用。例如,您可以使用虚函数指针来创建可以处理任何类型的图形对象的函数。

2.游戏开发:虚函数指针和模板编程可以在游戏开发中使用。例如,您可以使用虚函数指针来创建可以处理任何类型的游戏对象的函数。

3.网络编程:虚函数指针和模板编程可以在网络编程中使用。例如,您可以使用虚函数指针来创建可以处理任何类型的网络数据的函数。模板编程结合虚函数指针优势

虚函数指针和模板编程都是C++中的重要特性,当它们结合使用时,可以显著提高代码的灵活性、可重用性和可维护性。

#灵活

模板编程可以将代码通用化,使其适用于不同的数据类型。虚函数指针可以实现函数的动态绑定,从而允许在运行时选择要调用的函数。结合使用时,可以创建出高度灵活的代码,可以轻松地适应不同的情况和需求。

例如,可以创建一个模板函数来计算两个对象的距离,该函数可以适用于任何具有位置属性的对象。通过使用虚函数指针,可以在运行时选择要使用的距离计算方法。这允许您轻松地为不同的对象类型创建自定义的距离计算方法,而无需修改模板函数本身。

#可重用性

模板编程可以提高代码的可重用性,因为它允许您创建通用的代码,可以适用于不同的数据类型。虚函数指针可以进一步提高代码的可重用性,因为它允许您创建通用的函数,可以调用不同的函数实现。

例如,可以创建一个模板类来表示一个图形对象。该类可以具有一个虚函数来绘制对象。通过使用虚函数指针,可以在运行时选择要使用的绘制方法。这允许您轻松地为不同的图形对象类型创建自定义的绘制方法,而无需修改模板类本身。

#可维护性

模板编程和虚函数指针都可以提高代码的可维护性。模板编程可以使代码更易于阅读和理解,因为它消除了重复的代码。虚函数指针可以使代码更容易维护,因为它允许您轻松地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论