[黑马程序员C++笔记]P128-P134类和对象-继承

29 篇文章 4 订阅
订阅专栏

目录

P127类和对象-继承-基本语法

P128类和对象-继承-继承方式

P129类和对象-继承-继承中的对象模型

P130类和对象-继承-构造和析构顺序

P131类和对象-继承-同名成员处理

P132类和对象-继承-同名静态成员处理

P133类和对象-继承-多继承语法

P134类和对象-继承-菱形继承


继承是面向对象三大特性之一

有些类与类之间存在特殊的关系,例如下图中:

我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。

这个时候我们就可以考虑利用继承的技术,减少重复代码

P127类和对象-继承-基本语法

例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同

接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处

普通实现:

using namespace std;
#include<iostream>
//Java页面
class Java {
public:
	void header() {
		cout << "首页、公开课、登录、注册.....(公共头部)" << endl;
	}
	void footer() {
		cout << "帮助中心、交流合作、站内地图....(公共底部)" << endl;
	}
	void left()
	{
		cout << "Java,Python,C++...(公共分类列表)" << endl;
	}
	void content()
	{
		cout << "JAVA学科视频" << endl;
	}
};

//Python页面
class Python
{
public:
	void header()
	{
		cout << "首页、公开课、登录、注册...(公共头部)" << endl;
	}
	void footer()
	{
		cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
	}
	void left()
	{
		cout << "Java,Python,C++...(公共分类列表)" << endl;
	}
	void content()
	{
		cout << "Python学科视频" << endl;
	}
};
//C++页面
class CPP
{
public:
	void header()
	{
		cout << "首页、公开课、登录、注册...(公共头部)" << endl;
	}
	void footer()
	{
		cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
	}
	void left()
	{
		cout << "Java,Python,C++...(公共分类列表)" << endl;
	}
	void content()
	{
		cout << "C++学科视频" << endl;
	}
};

void test01()
{
	//Java页面
	cout << "Java下载视频页面如下: " << endl;
	Java ja;
	ja.header();
	ja.footer();
	ja.left();
	ja.content();
	cout << "--------------------" << endl;

	//Python页面
	cout << "Python下载视频页面如下: " << endl;
	Python py;
	py.header();
	py.footer();
	py.left();
	py.content();
	cout << "--------------------" << endl;

	//C++页面
	cout << "C++下载视频页面如下: " << endl;
	CPP cp;
	cp.header();
	cp.footer();
	cp.left();
	cp.content();

}

int main() {

	test01();

	system("pause");

	return 0;
}

继承实现:  

//公共页面
class BasePage
{
public:
	void header()
	{
		cout << "首页、公开课、登录、注册...(公共头部)" << endl;
	}

	void footer()
	{
		cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
	}
	void left()
	{
		cout << "Java,Python,C++...(公共分类列表)" << endl;
	}

};

//Java页面
class Java : public BasePage
{
public:
	void content()
	{
		cout << "JAVA学科视频" << endl;
	}
};
//Python页面
class Python : public BasePage
{
public:
	void content()
	{
		cout << "Python学科视频" << endl;
	}
};
//C++页面
class CPP : public BasePage
{
public:
	void content()
	{
		cout << "C++学科视频" << endl;
	}
};

void test01()
{
	//Java页面
	cout << "Java下载视频页面如下: " << endl;
	Java ja;
	ja.header();
	ja.footer();
	ja.left();
	ja.content();
	cout << "--------------------" << endl;

	//Python页面
	cout << "Python下载视频页面如下: " << endl;
	Python py;
	py.header();
	py.footer();
	py.left();
	py.content();
	cout << "--------------------" << endl;

	//C++页面
	cout << "C++下载视频页面如下: " << endl;
	CPP cp;
	cp.header();
	cp.footer();
	cp.left();
	cp.content();


}

int main() {

	test01();

	system("pause");

	return 0;
}

总结:

继承的好处:==可以减少重复的代码==

class A : public B;

A 类称为子类 或 派生类

B 类称为父类 或 基类

派生类中的成员,包含两大部分

一类是从基类继承过来的,一类是自己增加的成员。

从基类继承过过来的表现其共性,而新增的成员体现了其个性。

P128类和对象-继承-继承方式

继承的语法:class 子类 : 继承方式 父类

继承方式一共有三种:

  • 公共继承

  • 保护继承

  • 私有继承

 示例:

using namespace std;
#include<iostream>
//继承方式
//公共继承
class Base1 {
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son1 :public Base1 {
public:
	void func() {
		m_A = 10;//父类中的公共权限成员到子类中依然是公共权限
		m_B = 10;//父类中的保护权限成员到子类中依然是保护权限
		//m_C = 10;//报错:父类中的私有权限成员 子类访问不到
	}
};
void test01() {
	Son1 s1;
	s1.m_A = 100;
	//s1.m_B = 100;  //报错:到Son1中的m_B是保护权限 类外访问不到
}

//保护继承
class Base2
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};
class Son2 :protected Base2
{
public:
	void func()
	{
		m_A; //可访问 protected权限
		m_B; //可访问 protected权限
		//m_C; //不可访问
	}
};
void myClass2()
{
	Son2 s;
	//s.m_A; //不可访问
}

//私有继承
class Base3
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};
class Son3 :private Base3
{
public:
	void func()
	{
		m_A; //可访问 private权限
		m_B; //可访问 private权限
		//m_C; //不可访问
	}
};
class GrandSon3 :public Son3
{
public:
	void func()
	{
		//Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到
		//m_A;
		//m_B;
		//m_C;
	}
};

int main() {

	

	system("pause");

	return 0;
}

P129类和对象-继承-继承中的对象模型

问题:从父类继承过来的成员,哪些属于子类对象中?

示例:

using namespace std;
#include<iostream>

class Base
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C; //私有成员只是被隐藏了,但是还是会继承下去
};

//公共继承
class Son :public Base
{
public:
	int m_D;
};

void test01()
{
	//父类中所有非静态成员属性都会被子类继承下去
	//父类中私有成员属性是被编译器给隐藏了,因此是访问不到,但确实是被继承了
	cout << "sizeof Son = " << sizeof(Son) << endl;
}

int main() {

	test01();

	system("pause");

	return 0;
}

结果:

如何利用开发人员命令提示工具查看对象模型?

  • 跳转盘符 F:(项目所在盘)
  • 跳转文件路径 cd 具体路径
  • 查看命名
  • cl /d1 reportSingleClassLayout类名 文件名

例子:

P130类和对象-继承-构造和析构顺序

子类继承父类后,当创建子类对象,也会调用父类的构造函数

问题:父类和子类的构造和析构顺序是谁先谁后?

using namespace std;
#include<iostream>

class Base
{
public:
	Base()
	{
		cout << "Base构造函数!" << endl;
	}
	~Base()
	{
		cout << "Base析构函数!" << endl;
	}
};

class Son : public Base
{
public:
	Son()
	{
		cout << "Son构造函数!" << endl;
	}
	~Son()
	{
		cout << "Son析构函数!" << endl;
	}

};


void test01()
{
	//继承中 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反
	Son s;
}

int main() {

	test01();

	system("pause");

	return 0;
}

结果:

总结:继承中 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反  

P131类和对象-继承-同名成员处理

问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?

  • 访问子类同名成员 直接访问即可

  • 访问父类同名成员 需要加作用域

示例:

using namespace std;
#include<iostream>

class Base {
public:
	Base() {
		m_A = 100;
	}
	void func() {
		cout << "Base--func()调用" << endl;
	}
	void func(int a) {
		cout << "Base--func(int a)调用" << endl;
	}
	int m_A;
};

class Son :public Base {
public:
	Son() {
		m_A = 200;
	}
	void func() {
		cout << "Son--func()调用" << endl;
	}
	
	int m_A;
};
//同名成员属性处理
void test01() {
	Son s;
	cout << "Son m_A = " << s.m_A << endl;
	//如果通过子类对象 访问到父类中的同名成员,需要加作用域
	cout << "Base m_A = " << s.Base::m_A << endl;

}
//同名成员函数处理
void test02() {
	Son s;
	s.func();//直接调用 调用的是子类中的同名成员函数
	s.Base::func();  //调用父类中的同名成员函数

	//如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中所有同名成员函数
    //如果想访问父类中被隐藏的同名成员函数,需要加作用域
	s.Base::func(100);

}
int main()
{
	cout << "同名成员属性处理结果" << endl;
	test01();
	cout << "同名成员函数处理结果" << endl;
	test02();
	system("pause");
	return 0;
}

结果:

 

总结:

  1. 子类对象可以直接访问到子类中同名成员

  2. 子类对象加作用域可以访问到父类同名成员

  3. 当子类与父类拥有同名的成员函数,子类会隐藏父类中同名成员函数,加作用域可以访问到父类中同名函数

P132类和对象-继承-同名静态成员处理

问题:继承中同名的静态成员在子类对象上如何进行访问?

静态成员和非静态成员出现同名,处理方式一致

  • 访问子类同名成员 直接访问即可

  • 访问父类同名成员 需要加作用域

例子:

using namespace std;
#include<iostream>
//继承中的同名静态成员处理方式
class Base {
public:
	static int m_A;
	static void func() {
		cout << "Base --static void func()" << endl;
	}

};
int Base::m_A = 100;
class Son :public Base {
public:
	static int m_A;
	static void func() {
		cout << "Son --static void func()" << endl;
	}
};
int Son::m_A = 200;
//同名静态成员属性
void test01() {
	//1、通过对象访问
	cout << "通过对象访问:" << endl;
	Son s;
	cout << "Son中static m_A = " << s.m_A << endl;
	cout<<  "Base中static m_A = " << s.Base::m_A << endl;
	//2、通过类名访问
	cout << "通过类名访问:" << endl;
	cout << "Son中static m_A = " << Son::m_A << endl;
	//第一个::代表通过类名的方式访问呢 第二个::代表访问父类作用域下
	cout << "Base中static m_A = " << Son::Base::m_A << endl;
}
//同名静态成员函数
void test02() {
	//1、通过对象访问
	cout << "通过对象访问:" << endl;
	Son s;
	s.func();
	s.Base::func();
	//2、通过类名的方式
	cout << "通过类名访问:" << endl;
	Son::func();
	Son::Base::func();
}
int main()
{

	cout << "同名静态成员属性处理" << endl;
	test01();
	cout << "同名静态成员函数处理" << endl;
	test02();
	system("pause");
	return 0;
}

结果:

总结:同名静态成员处理方式和非静态处理方式一样,只不过有两种访问的方式(通过对象 和 通过类名)  

P133类和对象-继承-多继承语法

C++允许一个类继承多个类

语法:class 子类 :继承方式 父类1 , 继承方式 父类2...

多继承可能会引发父类中有同名成员出现,需要加作用域区分

C++实际开发中不建议用多继承

示例:

class Base1 {
public:
	Base1()
	{
		m_A = 100;
	}
public:
	int m_A;
};

class Base2 {
public:
	Base2()
	{
		m_A = 200;  //开始是m_B 不会出问题,但是改为mA就会出现不明确
	}
public:
	int m_A;
};

//语法:class 子类:继承方式 父类1 ,继承方式 父类2 
class Son : public Base2, public Base1 
{
public:
	Son()
	{
		m_C = 300;
		m_D = 400;
	}
public:
	int m_C;
	int m_D;
};


//多继承容易产生成员同名的情况
//通过使用类名作用域可以区分调用哪一个基类的成员
void test01()
{
	Son s;
	cout << "sizeof Son = " << sizeof(s) << endl;
	cout << s.Base1::m_A << endl;
	cout << s.Base2::m_A << endl;
}

int main() {

	test01();

	system("pause");

	return 0;
}

总结: 多继承中如果父类中出现了同名情况,子类使用时候要加作用域

P134类和对象-继承-菱形继承

菱形继承概念:

两个派生类继承同一个基类

又有某个类同时继承者两个派生类

这种继承被称为菱形继承,或者钻石继承

典型的菱形继承案例:

菱形继承问题:

  1. 羊继承了动物的数据,驼同样继承了动物的数据,当草泥马使用数据时,就会产生二义性。

  2. 草泥马继承自动物的数据继承了两份,其实我们应该清楚,这份数据我们只需要一份就可以。  

示例:

 

class Animal
{
public:
	int m_Age;
};

//继承前加virtual关键字后,变为虚继承
//此时公共的父类Animal称为虚基类
class Sheep : virtual public Animal {};
class Tuo   : virtual public Animal {};
class SheepTuo : public Sheep, public Tuo {};

void test01()
{
	SheepTuo st;
	st.Sheep::m_Age = 100;
	st.Tuo::m_Age = 200;
    //当菱形继承,两个父类拥有相同的数据,需要加以作用域区分
	cout << "st.Sheep::m_Age = " << st.Sheep::m_Age << endl;
	cout << "st.Tuo::m_Age = " <<  st.Tuo::m_Age << endl;
    //这些数据我们知道 只要有一份就可以,菱形继承导致数据有两份,造成资源浪费
	cout << "st.m_Age = " << st.m_Age << endl;
}

int main() {
	test01();
	system("pause");
	return 0;
}

输出结果均为200。

总结:

  • 菱形继承带来的主要问题是子类继承两份相同的数据,导致资源浪费以及毫无意义

  • 利用虚继承可以解决菱形继承问题

python多重继承 同名函数_python 多重继承中同名方法与属性的调用选择 | AI学习网...
weixin_39932947的博客
12-10 433
Python 多重继承中同名方法与属性的调用选择接下来,我们准备为大家介绍"多重继承时的同名方法与属性的调用选择"。在多重继承时,多个父类之间的方法与属性名字有可能会相同,那么,在子类调用时,究竟是调用哪个父类的方法或属性呢?选择方法如下:(1)在类外通过子类定义的对象调用父类的方法时,按照继承时的顺序,从左往右寻找父类中同名的方法,找到就立即调用。(2)在子类定义时,在子类中如果需要调用父类中的...
信息奥赛课课通(c++p128-1金币问题
mengdicfm的博客
09-15 1541
描述 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。 请编程计算在前K天里,1&amp;amp;amp;amp;lt;=K&amp;amp;amp;amp;...
bilibiliC++45-52类和对象-继承
aiqq136的博客
02-05 151
4.6 继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系,例如下图中: 我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。 这个时候我们就可以考虑利用继承的技术,减少重复代码 4.6.1 继承的基本语法 例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同 接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处 普通实现: #include<iostream> using namespa
解决多重继承中函数同名方案
在路上...
03-07 1758
当两个接口中有相同的函数声明名,比如:interface IA{ virtual void Fun()=0;};interface IB{ virtual void Fun()=0;};类CD继承这两个接口:class CD : public IA,public IB{public: void Fun();};如
C++继承中重写不同基类中相同原型的虚函数
weixin_34244102的博客
05-31 286
C++继承体系当中,在派生类中可以重写不同基类中的虚函数。下面就是一个例子:class CBaseA { public:     virtual void TestA(); }; class CBaseB { public:     virtual void TestB(); }; class CDerived : public CBaseA, public CBaseB { public: ...
多重继承同名函数调用
Emebaraly的博客
05-23 3534
在主程序中派生类对象child可调用派生类中的成员函数display,若要调用基类的成员函数display,可在派生类的成员函数display中调用基类的成员函数display,但必须在该成员名之前加上基类名和作用域标识符::代码示例如下:#include&lt;iostream&gt; #include&lt;string&gt; using namespace std; class Time{...
p120 - p128操作系统内核结构解析
最新发布
05-15
操作系统内核是计算机系统的核心组件之一,负责管理计算机的硬件资源和提供服务给应用程序。内核可以看作是应用程序和硬件设备之间的桥梁,负责管理进程、线程、内存、硬件设备等资源。 内核的四大基本能力包括: ...
ATD_single_channel--OK.zip_MC9S12P128_okprm_single
09-23
【标题】"ATD_single_channel--OK.zip_MC9S12P128_okprm_single" 涉及的关键知识点是基于Freescale(现为NXP)的MC9S12P128微控制器的单通道自动测试设备(Automatic Test Device,简称ATD)数据采集系统,该系统...
freescale-MC9S12P128中文手册.doc
04-10
MC9S12P系列单片机是飞思卡尔(Freescale)推出的一款高性能、低成本、低引脚数的汽车级微控制器,旨在填补16位高端MC9S12XS系列和8位低端单片机之间的市场空白。这款芯片主要应用于需要CAN或LIN/J2602通信接口的...
意法半导体推出128Mb串行闪存芯片M25P128
11-26
意法半导体(ST)推出的M25P128是一款128Mb的串行闪存芯片,专门针对需要高效能且成本敏感的计算机和消费电子产品中的代码存储应用。这款芯片扩展了ST的代码存储产品线,覆盖了从512Kb到64Mb的范围,并声称是同级别...
C++中的多重继承
一怀明月的博客
03-27 1259
C++中的多重继承的细节详解
C++学习之路-多继承
weixin_45452278的博客
06-01 1090
继承,顾名思义就是继承多个父类。以往派生类只有一个基类,叫作单继承。派生类有两个或者两个以上的基类,就叫作多继承。 多继承的语法也很简单,将多个基类用逗号隔开。 例如已声明了类A、类B和类C,那么可以这样来声明派生类D: 可以看到一个细节,可以分别用不同的方式继承基类,比如public, private, protected。但我们学过继承(可以看之前的博文),继承方式尽量只选public。派生类初始化基类中的private成员变量,都需要借助初始化列表的初始化方式,并且调用基类中的构造函数,间接的去初始
c++继承|菱形继承(也是继承的同名问题)-----virtual修饰的继承方式
weixin_60569662的博客
12-02 371
继承---满足菱关系才有虚继承 引入虚继承: A类中有一个a属性,A继承产生B类也有一个属性a,A继承产生C类也有一个属性a,B、C类继承产生D类--->普通的继承方式让D类中有两个属性a,有两个拷贝本,a由谁决定? 解决方案: 让相同的a属性只保留一份(让两个a只有一个有效)--->用虚继承--->这份a必须让A的构造函数初始化(在D类中调用A类(祖先类)的构造函数) 用虚继承的方式 class B :virtual public A { }; 用virt.
C++ 多重继承
我是小白呀的博客
05-13 7564
C++ 多重继承. 多重继承是什么, 多重继承的优缺点以及注意事项.
从C到C++___类继承(五)多重继承
m0_71009069的博客
08-07 383
C++多重继承
黑马程序员---类和继承
u011584903的专栏
08-06 564
-> 类和继承 -> 类继承 1、可以使用一个已经存在的类作为新类的基础。已存在的类称为基类,新类称为派生类 -> 派生类成员; 1、自己声明中的成员 2、基类的成员 2、要声明一个派生类,需要在类名后加入基类规格说明。基类规格说明由冒号和后面跟着用作基类的类的名称组成。派生类被描述为直接继承自列出的基类。 3、派生类被描述为扩展它的基类,因为它包含了基类的成员,加上在它自己的声明中
黑马程序员---成长之路-----OC之基础篇类的继承和派生
qq_31783131的博客
10-09 529
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训a>、期待与您交流! ---------android培训、java培训、java学习型技术博客、期待与您交流!-------- 类与类之间的关系就像是所有的人都属于人这个类,而人这个类里又有一部分是残疾人,残疾人又可
【b站黑马程序员C++视频学习笔记-菱形继承
qq_42622072的博客
03-05 692
菱形继承(钻石继承
C++学习练习 之多态
SunInThePalm的博客
01-29 799
C++学习练习 之多态 简单来说,多态很强! 目录一、多态基本概念二、多态小案例1之计算器类三、纯虚函数和抽象类四、多态小案例2之制作饮品五、虚析构和纯虚析构六、多态案例3之电脑组装七、学习资源八、总结 一、多态基本概念 1、多态分为静态多态和动态多态。 静态多态:函数重载和运算符重载属于静态多态,复用函数名。 动态多态:派生类和虚函数实现运行时多态。 2、静态多态和动态多态区别。 静态多态:静态多态的函数地址早绑定,在编译阶段确定函数地址。 动态多态:动态多态的函数地址晚绑定,在运行阶段确定
MC9S12P128单通道ATD数据采集调试成功
资源摘要信息:"MC9S12P128是一款由飞思卡尔半导体(现恩智浦半导体)开发的基于S12X内核的16位微控制器,广泛应用于汽车和工业控制系统。ATD(模数转换器)是微控制器中用于将模拟信号转换为数字信号的模块。在本次...
写文章

热门文章

  • Pycharm创建虚拟环境 14197
  • Tensor的创建方法 12180
  • python读取音频文件的几种方式 11786
  • 读取csv和tsv文件以及两者的相互转换 9453
  • [mean teacher笔记]Mean teachers are better role models 6091

分类专栏

  • Linux 3篇
  • python代码 20篇
  • Pytorch 2篇
  • 算法 10篇
  • 数据结构 5篇
  • 蓝桥杯 2篇
  • 论文 11篇
  • C++ 29篇
  • 深度学习 3篇
  • 代码报错 1篇
  • 杂文 1篇

最新评论

  • AST:Audio Spectrogram Transformer

    贫道备胎子: 因为huggingface是集成过的,包括了滤波和特征提取,原始ast只有特征提取

  • 读取csv和tsv文件以及两者的相互转换

    uidauk: pandas包貌似无法用最新版本的R下载了

  • Sound Event Detection: A Tutorial

    2301_79868675: 你好,这个论文有代码吗

  • python读取音频文件的几种方式

    语音编解码的小白: 有没有逆向操作?合成语音的相关函数总结。

  • AST:Audio Spectrogram Transformer

    hi_hwliu: 博主,你好,这个ast模型在huggingface上给出的代码示例,输入为什么时音频而不是频谱图?

大家在看

  • SpringBoot 面试常见问答总结(一)
  • JavaScript从零学起 —— 数据类型(进阶篇6) 714
  • 【哈工大_操作系统实验】Lab7 地址映射与共享
  • PyCharm的安装与汉化(详细教程) 378
  • 【Unity插件】Behavior 2 | Game Creator 2 简化工作流程,增强AI能力 409

最新文章

  • 黑马程序员-从0到1学习Linux-第四章-Linux实用操作
  • 黑马程序员-从0到1学习Linux-第三章-Linux用户和权限
  • 黑马程序员-从0到1学习Linux-第二章-Linux基础命令
2023年24篇
2022年62篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家浮雕人物孔子玻璃钢雕塑绍兴商场美陈费用河源树脂玻璃钢雕塑厂家上海镜面玻璃钢雕塑询问报价西宁玻璃钢雕塑批发北碚玻璃钢花盆花器大理市玻璃钢雕塑公司滨州玻璃钢雕塑安装仙桃玻璃钢仿铜雕塑泰州商场开业美陈玻璃钢浮雕雕塑批发南通玻璃钢园林雕塑价格玉如意玻璃钢雕塑春季商场美陈门玻璃钢学生读书雕塑图片贵州玻璃钢雕塑凳子泰州玻璃钢卡通雕塑杭州商场大厅美陈特色商场美陈供应金山区拉丝玻璃钢雕塑产品介绍蚌埠百货商场美陈户外商场美陈批发价玻璃钢雕塑户外会变色不福建装饰商场美陈报价抽象玻璃钢雕塑图片商场美陈研发公司四方玻璃钢花盆图片玻璃钢雕塑哪家品质好舞钢商场美陈造景玻璃钢恐龙雕塑专业公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化