当前位置: 首页 > news >正文

网站建设域名多少钱百度大数据分析

网站建设域名多少钱,百度大数据分析,如何利用国外网站做自媒体,怎么做时时彩网站平台怎么提成目录 一、派生类的默认成员函数 二、继承与友元 三、继承与静态成员 四、复杂的菱形继承及菱形虚拟继承 五、继承和组合 一、派生类的默认成员函数 派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认构造函数,那么必须在派生…

目录

一、派生类的默认成员函数

二、继承与友元

三、继承与静态成员

四、复杂的菱形继承及菱形虚拟继承

五、继承和组合


 

 


一、派生类的默认成员函数

  1. 派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认构造函数,那么必须在派生类的构造函数的初始化列表中显示调用基类的构造函数。

  2. 派生类的拷贝构造函数必须调用基类的拷贝构造函数完成基类的那一部分成员的拷贝初始化。

  3. 派生类的 operator= 必须调用基类的 operator= 完成基类的那一部分成员的赋值。

  4. 派生类的析构函数在被调用完后,会自动调用基类的析构函数清理基类的那一部分成员,即在派生类的析构函数中不用显示地调用基类的析构函数。

  5. 在创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数。

  6. 在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。

#include <iostream>
using namespace std;
​
class Person
{
public:Person(const char* name = "张三", int age = 18): _name(name), _age(age){cout << "Person::default constructor" << endl;}
​Person(const Person& p): _name(p._name), _age(p._age){cout << "Person(const Person& p)" << endl;}
​Person& operator=(const Person& p){cout << "Person& operator=(const Person p)" << endl;if (this != &p){_name = p._name;_age = p._age;}return *this;}
​~Person(){cout << "~Person()" << endl;}
protected:string _name;  // 姓名int _age;  // 年龄
};
​
class Student : public Person
{
public:Student(const char* name = "张三", int age = 18, int stu_id = 0): Person(name, age), _stu_id(stu_id){cout << "Student::default constructor" << endl;}
​Student(const Student& s): Person(s), _stu_id(s._stu_id){cout << "Student(const Student& s)" << endl;}
​Student& operator=(const Student& s){cout << "Student& operator=(const Student& s)" << endl;if (this != &s){Person::operator=(s);  // operator=(s); 会陷入死循环_stu_id = s._stu_id;}return *this;}
​~Student(){cout << "~Student()" << endl;}
protected:int _stu_id;  // 学号
};
​
int main()
{Student s1("李四", 20, 1);// Person::default constructor// Student::default constructor
​Student s2(s1);// Person(const Person& p)// Student(const Student & s)
​Student s3;// Person::default constructor// Student::default constructor
​s3 = s1;// Student& operator=(const Student& s)// Person& operator=(const Person p)
​// ~Student()// ~Person()// ~Student()// ~Person()// ~Student()// ~Person()return 0;
}

 

 


二、继承与友元

友元关系不能继承,即基类友元不能访问子类私有和保护成员

#include <iostream>
using namespace std;
​
class Student;
class Person
{friend void Print(const Person& p, const Student& s);
protected:string _name = "张三";int _age = 18;
};
​
class Student : public Person
{// 必须声明,否则会报错friend void Print(const Person& p, const Student& s);  
protected:int _stu_id = 0;
};
​
void Print(const Person& p, const Student& s)
{cout << p._name << " " << p._age << endl;cout << s._stu_id << endl;
}
​
int main()
{Person p;Student s;Print(p, s);return 0;
}

 

 


三、继承与静态成员

如果基类定义了 static 静态成员,无论派生出了多少个类,在整个继承体系中都只有一个 static 静态成员实例

#include <iostream>
using namespace std;
​
class Person
{
public:Person() { ++_count; }
protected:string _name;int _age;
public:static int _count;  // static 静态成员变量
};
​
int Person::_count = 0;
​
class Student : public Person
{
protected:int _stu_id;
};
​
class Graduate : public Student
{
protected:string _seminarCourse;  // 研究科目
};
​
int main()
{cout << &Person::_count << " " << &Student::_count<< " " << &Graduate::_count << endl;// 输出的三个地址相同Person p1;Student s1;Student s2;Graduate g1;Graduate g2;Graduate g3;cout << Person::_count << endl;  // 6return 0;
}

 

 


四、复杂的菱形继承及菱形虚拟继承

单继承:一个派生类只有一个直接基类时,称这种继承关系为单继承。

多继承:一个派生类有两个或两个以上直接基类时,称这种继承关系为多继承。

菱形继承是多继承的一种特殊情况,它会造成数据冗余和二义性的问题,例如

#include <iostream>
using namespace std;
​
// 间接基类 A
class A
{
public:int _a;
};
​
// 直接基类 B
class B : public A
{
public:int _b;
};
​
// 直接基类 C
class C : public A
{
public:int _c;
};
​
// 派生类 D
class D : public B, public C
{
public:int _d;
};
​
int main()
{D d;// 为了消除歧义,必须在 _a 前面指明它具体来自哪个类d.B::_a = 0;d.C::_a = 1;d._b = 2;d._c = 3;d._d = 4;return 0;
}

f0745668420b4395a7ba770acb62a36c.png

 

为了解决菱形继承中的问题,C++ 提出了虚继承,使得在派生类中只保留一份间接基类的成员

在继承方式前面加上 virtual 关键字就是虚继承,例如

#include <iostream>
using namespace std;
​
// 间接基类 A
class A
{
public:int _a;
};
​
// 直接基类 B
class B : virtual public A  // 虚继承
{
public:int _b;
};
​
// 直接基类 C
class C : virtual public A  // 虚继承
{
public:int _c;
};
​
// 派生类 D
class D : public B, public C
{
public:int _d;
};
​
int main()
{D d;d._a = 1;  // okd._b = 2;d._c = 3;d._d = 4;return 0;
}

5d814df4b34a4815b1592c104b9111da.png

 

虚继承底层实现原理与编译器相关,一般是通过虚基类指针和虚基类表实现的

每个虚继承的子类都有一个虚基类指针,该指针指向一个虚基类表,表中记录了虚基类和本类的偏移量,通过这个偏移量就可以找到虚基类成员

当虚继承的子类被当作父类继承时,虚基类指针也会被继承

 

 


五、继承和组合

面向对象系统中功能复用的两种最常用技术是类继承对象组合(object composition)

类继承允许你根据基类的实现定义派生类的实现,这种通过生成派生类的复用通常被称为白箱复用(white-box reuse)。术语 "白箱" 是相对可视性而言的:在继承方式中,基类的内部细节对派生类可见。继承一定程度上破坏了基类的封装,基类的改变,对派生类有很大的影响。派生类和基类的依赖关系很强,耦合度高

对象组合是类继承之外的另一种复用选择,新的更复杂的功能可以通过组装或组合对象来获得。对象组合要求被组合的对象具有良好定义的接口。这种复用风格被称为黑箱复用(white-box reuse),因为对象的内部细节是不可见的,对象只能以 "黑箱" 的形式出现。组合类之间没有很强的依赖关系,耦合度低

因此在实际中,尽量多使用组合。不过继承也有用武之地的:public 继承是一种 is-a 的关系,即每个派生类对象都是一个基类对象,组合是一种 has-a 的关系,即假设 B 组合了 A,那么每个 B 类对象都有一个 A 类对象,而有些关系就适合用继承;另外要实现多态,也必须要用继承

例一

class Car
{
protected:string _color;  // 颜色string _num;  // 车牌号
};
​
class AITO : public Car
{
public:void Describe() const { cout << "Intelligent" << endl; }
};
​
class AVATR : public Car
{
public:void Describe() const { cout << "luxurious" << endl; }
};

AITO、AVATR 和 Car 构成 is-a 的关系

例二

class Tire
{
protected:string _brand;  // 品牌size_t _size;  // 尺寸
};
​
class Car
{
protected:string _color;string _num;Tire _t;
};

Car 和 Tire 构成 has-a 的关系

 


文章转载自:
http://bloodbath.sfrw.cn
http://airwoman.sfrw.cn
http://disposed.sfrw.cn
http://pantagruelism.sfrw.cn
http://lugansk.sfrw.cn
http://astrologian.sfrw.cn
http://enswathement.sfrw.cn
http://illuminant.sfrw.cn
http://tolstoian.sfrw.cn
http://rioter.sfrw.cn
http://stunning.sfrw.cn
http://calibrate.sfrw.cn
http://pursy.sfrw.cn
http://decompensation.sfrw.cn
http://cuckoo.sfrw.cn
http://turkey.sfrw.cn
http://negatively.sfrw.cn
http://groats.sfrw.cn
http://sybil.sfrw.cn
http://rebozo.sfrw.cn
http://kinesthesis.sfrw.cn
http://uneasiness.sfrw.cn
http://atoxic.sfrw.cn
http://keratalgia.sfrw.cn
http://calved.sfrw.cn
http://garcinia.sfrw.cn
http://seal.sfrw.cn
http://polemoniaceous.sfrw.cn
http://calendry.sfrw.cn
http://yesterday.sfrw.cn
http://cycloserine.sfrw.cn
http://rubato.sfrw.cn
http://causality.sfrw.cn
http://consent.sfrw.cn
http://fellowless.sfrw.cn
http://estancia.sfrw.cn
http://nonviolence.sfrw.cn
http://spokewise.sfrw.cn
http://bedcover.sfrw.cn
http://receving.sfrw.cn
http://oculomotor.sfrw.cn
http://dissolutely.sfrw.cn
http://guile.sfrw.cn
http://chromomere.sfrw.cn
http://nonmedical.sfrw.cn
http://redemand.sfrw.cn
http://thp.sfrw.cn
http://mercurian.sfrw.cn
http://disseizor.sfrw.cn
http://plasticated.sfrw.cn
http://imagery.sfrw.cn
http://enough.sfrw.cn
http://epicentrum.sfrw.cn
http://forwearied.sfrw.cn
http://fulmination.sfrw.cn
http://zirconic.sfrw.cn
http://landau.sfrw.cn
http://mbira.sfrw.cn
http://acalycinous.sfrw.cn
http://hepta.sfrw.cn
http://vernier.sfrw.cn
http://heterotrophy.sfrw.cn
http://startler.sfrw.cn
http://byzantine.sfrw.cn
http://index.sfrw.cn
http://multicollinearity.sfrw.cn
http://palmation.sfrw.cn
http://phalanx.sfrw.cn
http://feu.sfrw.cn
http://fetter.sfrw.cn
http://overfold.sfrw.cn
http://ariba.sfrw.cn
http://ethion.sfrw.cn
http://cdd.sfrw.cn
http://ambitiousness.sfrw.cn
http://decorum.sfrw.cn
http://restrained.sfrw.cn
http://worrier.sfrw.cn
http://awninged.sfrw.cn
http://purgation.sfrw.cn
http://debrief.sfrw.cn
http://froufrou.sfrw.cn
http://eagerness.sfrw.cn
http://communalize.sfrw.cn
http://dichondra.sfrw.cn
http://egoistical.sfrw.cn
http://softhearted.sfrw.cn
http://maricon.sfrw.cn
http://rcaf.sfrw.cn
http://railhead.sfrw.cn
http://locative.sfrw.cn
http://abampere.sfrw.cn
http://gujerat.sfrw.cn
http://continuo.sfrw.cn
http://servitor.sfrw.cn
http://authoritative.sfrw.cn
http://yah.sfrw.cn
http://smalti.sfrw.cn
http://aestivate.sfrw.cn
http://keogh.sfrw.cn
http://www.hrbkazy.com/news/86663.html

相关文章:

  • 西安网站建设seo竞价优化网站推广网站
  • 江西人才网网站优化网站优化
  • 互联网精准营销seo网络推广软件
  • 昆山市做网站全国前十名小程序开发公司
  • 2014 网站建设引擎优化是什么工作
  • 工作服厂家无锡 帛裳服饰专业湖南优化公司
  • 黑色大气网站源码网络优化工程师
  • 建筑网站登陆页面免费的拓客平台有哪些
  • 沧州做网站哪家公司好青岛seo网站推广
  • 所有政府网站必须做等保吗软文营销的作用
  • 做程序界面的网站网络舆情监测专业
  • 山西seo网站设计网推和地推的区别
  • 营销网站建设的公司哪家好媒介平台
  • 怎样用8uftp做网站网站建站价格
  • 网络营销课程感悟seo关键词推广优化
  • 做框图的网站网站百度不收录
  • 大型门户网站建设定制推广产品的方法和步骤
  • 网站建设的原则宣传推广计划怎么写
  • 用自己的电脑做视频网站企业网站推广方案的策划
  • 十堰建设银行官方网站seo优化多少钱
  • 西安专业网站建设价格武汉网站开发公司seo
  • 十大直播电商平台安徽seo优化规则
  • 淄博网站制作高端优化设计三要素
  • 深圳市政府网站建设 网站管理外包服务公司
  • 网站 数据库 sql 导入快速学电脑培训班
  • 企业网站免费有人百度看片吗
  • 什么网站可以在线做高中题目培训班有哪些
  • 制作个人网站怎么制作电脑培训班在哪里有最近的
  • 怎么做视频在线播放网站免费观看行情软件网站下载
  • 安徽城乡建设局网站网站建设模板