当前位置:文档之家› 第10章 继承

第10章 继承

第10章 继承
第10章 继承

第十章继承

继承是面向对象程序设计的基础的概念之一,是解决软件重用(reuse)的一种方法。本章将先介绍与继承相关的一些基础概念,然后介绍C++中实现继承的方法。根据不同的继承方式以及基类成员的访问控制权限,讨论如何访问基类的各类成员。接着对从多个基类派生子类的多继承进行讨论。由于经过继承与派生之后,派生类对象的成分既有自己特有的成分,也有通过继承而获得的成分,因此派生类的构造函数与析构函数要承担这两种成分的构造任务,如何完成两种成分的构造任务将会被介绍。同时,要讨论什么是二义性,以及解决二义性的方法,支配规则就是解决二义性的方法之一。在多继承情况下,每个基类都会在派生类对象中产生自己的基类子对象,派生类在继承路径上如果遇到共同基类,其派生类对象中就会产生该基类的多个基类子对象,使基类子对象惟一就是虚基类要解决的问题。由于派生类对象成分的多样性,派生类的赋值以及初始化语义值得认真研究。

10.1继承

继承机制规定:派生类可以继承基类的数据和操作,同时派生类也可以根据自身的特点新增自己的数据和操作。从共性与个性的关系上看,基类抽象出了其所有派生类的共同特征,而派生类则通过新增自己的数据和操作来体现其个性特点。通过继承可以在两个方面实现软件重用。其一,通过继承允许派生类共享基类的数据和操作,实现软件重用。此时,被复用的部分是基类的数据和操作。另外,通过公有继承,可以使派生类成为基类的子类型。从而使原本作用于基类对象的代码变成可以重用于其派生类对象,达到基类对象和派生类对象共享这段代码,或一段代码可以被多种类型对象共享的目的。

根据从一个基类还是从多个基类派生,继承分为单继承与多继承。声明单继承的的一般形式是:

class 派生类名 : 继承方式基类名

{

派生类新增成员的声明

};

其中,class是派生类的类说明符,类说明符也可以用struct。以class关键字说明时,派生类中没有被访问控制修饰符修饰的成员(缺省修饰的成员)均为类的私有成员,而以struct关键字说明时,派生类中缺省修饰的成员均为类的公有成员。在继承中,类说明符不能用union,因为用union声明的类既不能作为基类,也不能作为派生类。派生类名应该是C++的合法标识符。

继承方式可以是:public、protected、或private。继承方式为public的继承称为公有继承,继承方式为protected的继承称为保护继承,继承方式为private的继承称为私有继承。基类名应该是一个非union声明类的类名。

派生类新增成员的声明用于声明派生类新增的数据成员和成员函数。它们又可以进一步被类中的访问控制修饰符public、protected和private修饰。从而形成派生类中的公有数据成员、保护数据成员和私有数据成员三类数据成员,以及派生类中的公有成员函数、保护成员函数和私有成员函数三类成员函数。

下面以三维空间中的点、线为例说明如何由点类通过继承得到线类。

例10-1 由三维空间中的点类通过继承得到派生的三维空间中的线类。

#include "iostream.h"

#include "math.h"

struct D3Point

{

D3Point(int x=0,int y=0,int z=0){X0=x;Y0=y;Z0=z;}

D3Point(D3Point& p){X0=p.X0;Y0=p.Y0;Z0=p.Z0;}

~D3Point(){}

void Set(int x,int y,int z){X0=x;Y0=y;Z0=z;}

void Move(int dx,int dy,int dz){X0+=dx;Y0+=dy;Z0+=dz;}

void Show(){cout<<"X0="<

int GetY0(){return Y0;};

int Z0;

protected:

int Y0;

private:

int X0;

};

struct D3Line : public D3Point

{

D3Line(){X1=Y1=Z1=0;}

D3Line(int x,int y,int z,int x1,int y1,int z1){

Set(x,y,z);

X1=x1;Y1=y1;Z1=z1;

}

D3Line(D3Line& r);

~D3Line(){};

void Show();

int GetX1(){return X1;};

int GetY1(){return Y1;};

double Length();

int Z1;

protected:

int Y1;

private:

int X1;

};

D3Line::D3Line(D3Line& r) : D3Point(r)

{

X1=r.X1;Y1=r.Y1;Z1=r.Z1;

}

double D3Line::Length()

{

int dx2,dy2,dz2;

dx2=(GetX1()-GetX0())*(GetX1()-GetX0());

dy2=(Y1-Y0)*(Y1-Y0);

dz2=(Z1-Z0)*(Z1-Z0);

return sqrt(dx2+dy2+dz2);

}

void D3Line::Show()

{

D3Point::Show();

cout<<"X1="<

}

void main(void)

{

D3Point P1(10,20,30),P2(100,200,300);

D3Line L(10,20,30,100,200,300);

L.Show();

cout<<"L.Z0="<

cout<<"the length of the line is "<

cout<<"size of D3Point is "<

cout<<"size of D3Line is "<

}

程序的运行结果为:

X0=10,Y0=20,Z0=30

X1=100,Y1=200,Z1=300

L.Z0=30

the length of the line is 336.749

size of D3Point is 12

size of D3Line is 24

程序中通过:struct D3Line : public D3Point {…};说明D3Line类是从D3Point类继承而得。此时,D3Point类的数据成员X0、Y0、Z0自动成为D3Line类的数据成员,它们称为派生类中的基类子对象(subobject),它们构成空间直线的一个端点。同时,D3Line 类又新增了数据成员X1、Y1、Z1,它们构成了空间直线的另一个端点。程序运行结果中size of D3Point is 12和size of D3Line is 24可以说明这一点。

基类的成员函数也可以被派生类对象使用。当然,对基类数据成员和成员函数的访问与操作要受到继承方式和基类访问控制权限的约束,这个在下一节详细讨论。另外,派生类中还新增了自身的成员函数。在派生类成员函数Show中,通过D3Point::Show();调用,显示派生类的数据成员X0、Y0、Z0,而派生类的数据成员X1、Y1、Z1则必须由D3Line类Show函数中的cout输出。此时,D3Point::Show()称为通过成员名限定方式调用D3Point 类的Show操作。D3Point::是必须的,因为基类和派生类中都有Show操作。加成员名限定D3Point::将调用基类的Show操作;不加成员名限定,则调用派生类的Show,从而形成无限循环调用。

另外,派生类的拷贝构造函数通过D3Line::D3Line(D3Line& r) : D3Point(r)列出了对基类拷贝构造函数的调用,用于初始化派生类中的基类子对象X0、Y0、Z0。这方面的内容将在本章第4节进行。这里要强调的是:调用基类的拷贝构造函数D3Point(D3Point& p),初始化的却是派生类对象的数据成员X0、Y0、Z0。同时,D3Point(r)中实参是关于派生类D3Line的引用,潜在的引入了子类型的概念。公有继承产生的派生类对象可以用于基类对象适用的场合。子类型将在第11章介绍。

将X0、Y0、Z0,以及X1、Y1、Z1分别声明为基类和派生类的私有数据成员、保护数据成员和公有数据成员。目的是为了在后面能够解释不同的继承方式,以及基类中的不同访问控制对类中成员访问产生的影响。

将上面的内容和例子概括起来有如下几点;

1.在派生类声明中通过“: public D3Point”可以得到从基类的公有继承。

2.派生类中的数据结构由新增数据成员和派生得到的基类子对象组成。

3.对基类成员的访问要受到继承方式和基类访问控制的约束。

4.设计派生类的构造函数、析构函数、拷贝构造函数、赋值操作等都必须考虑到基类子对象。

5.本例引入了成员名限定的概念。

6.本例引入了子类型的概念。

10.2 对基类成员的访问

10.2.1 继承方式和访问控制

继承的引入使C++程序的结构发生了很大变化。此时,假设要讨论的类为当前类,则考虑继承和派生时一个完整的C++应用程序往往由这样一些模块组成:

在第5章中,把其它类和其它类的各个派生类、mian函数、以及不属于任何类的各个函数称为以当前类(即基类)为参考点的水平模块部分。现在考虑继承与派生情况,把当前类的直接基类和间接基类,称为以当前类为参考点的垂直向上模块部分。把当前类的各个派生类,包括当前类的直接和间接派生类,称为以当前类为参考点的垂直向下模块部分。在下面的讨论中,如果不做说明,简称垂直向下模块部分为垂直模块。在这种划分情况下,首先要明确的是基类成员通过继承会派生到派生类中,成为派生类中的基类子对象。并且要着重指出的是:这里所指的派生类既包括直接派生类,也包括间接派生类。特别是对于间接派生类对象,其数据结构中既包含其直接基类的基类子对象,也包括间接基类的基类子对象,同时还包括自身新增的数据成员。至于间接派生类对象中的直接基类和间接基类中的非静态成员函数则还是按照统一存储,共享使用的原则处理。

例10-2 基类对象,直接派生类对象和间接派生类对象的数据结构演示的例子。

#include "iostream.h"

struct A{ int X;};

struct B : public A { int Y;};

struct C : public B { int Z; };

void main(void)

{

A a;

B b;

C c;

a.X = 10;

b.X = 20; b.Y = 30;

c.X = 40; c.Y = 50; c.Z = 60;

cout<<"a.X="<

cout<<"b.X="<

struct D3Point

{

D3Point(int x=0,int y=0,int z=0){X0=x;Y0=y;Z0=z;}

int GetX0(){return X0;};

int GetY0(){return Y0;};

void Show(){cout<<"X0="<

int Z0;

protected:

int Y0;

private:

int X0;

};

struct D3Line : public D3Point

{

D3Line(){X1=Y1=Z1=0;}

D3Line(D3Point& p1,D3Point& p2);

void Show();

int GetX1(){return X1;};

int GetY1(){return Y1;};

int Z1;

protected:

int Y1;

private:

int X1;

};

D3Line::D3Line(D3Point& r1,D3Point& r2) : D3Point(r1)

{

X1=r2.GetX0();Y1=r2.GetY0();Z1=r2.Z0;

}

void D3Line::Show()

{

cout<<"X0="<

cout<<"X1="<

}

struct D3Plane : public D3Line

{

D3Plane(){X2=Y2=Z2=0;}

D3Plane(D3Line& r1,D3Point& r2);

void Show();

int GetX2(){return X2;};

int GetY2(){return Y2;};

int Z2;

protected:

int Y2;

private:

int X2;

};

D3Plane::D3Plane(D3Line& r1,D3Point& r2) : D3Line(r1) {

X2=r2.GetX0();Y2=r2.GetY0();Z2=r2.Z0;

}

void D3Plane::Show()

{

cout<<"X0="<

cout<<"X1="<

cout<<"X2="<

}

void main(void)

{

D3Point P1(10,20,30),P2(100,200,300),P3(400,500,600);

P1.Z0=P2.Z0=P3.Z0=50;

D3Line L(P1,P2);

L.Show();

L.Z0=L.Z1=250;

D3Plane PL(L,P3);

PL.Z2=800;

PL.Show();

cout<<"size of D3Point is "<

cout<<"size of D3Line is "<

cout<<"size of D3Plane is "<

程序的运行结果为:

X0=10,Y0=20,Z0=50

X1=100,Y1=200,Z1=50

X0=10,Y0=20,Z0=250

X1=100,Y1=200,Z1=250

X2=400,Y2=500,Z2=800

size of D3Point is 12

size of D3Line is 24

size of D3Plane is 36

在水平的main函数部分,P1.Z0=P2.Z0=P3.Z0=50;语句是访问三个空间点对象的公有数据成员;L.Z0=L.Z1=250;语句中L.Z1访问的是空间直线对象的公有数据成员,而L.Z0访问的是空间直线对象的通过继承得到的基类子对象中的公有数据成员;而PL.Z2=800;语句访问的是空间平面对象的公有数据成员,如果使用PL.Z0,或PL.Z1,这种使用也是合法的。但是绝对不能访问各个类中的保护成员或私有成员。例如:在D3Line类的构造函数中,引用对象r2来自水平部分,因此通过X1=r2.GetX0();Y1=r2.GetY0();语句来实现用r2的X0和Y0数据成员的值来初始化当前对象的数据成员X1和Y1。因此,在水平部分只能调用各个类提供的接口,即各个类的公有成员函数。

在公有继承情况下,D3Point类中私有数据成员X0通过继承成为D3Line类对象中的私有数据成员,对它的访问必须通过接口函数GetX0()来访问,如D3Line::Show函数中的GetX0();而其它成员都可以直接进行访问。同理,D3Point类中私有数据成员X0和D3Line 类中私有数据成员X1通过继承成为D3Plane类对象中的私有数据成员,在D3Plane类中,对X0和X1必须通过接口函数GetX0(),GetX1()来访问,而其它成员都可以直接进行访问。

size of D3Point is 12,size of D3Line is 24和size of D3Plane is 36分别说明了D3Point类、D3Line类、以及D3Plane类数据成员所占内存的大小分别是12个字节、24个字节和36个字节。

另外,D3Line::D3Line(D3Point& r1,D3Point& r2) : D3Point(r1)中的D3Point(r1)将调用D3Point的缺省拷贝构造函数去初始化D3Line类中的D3Point类的基类子对象的数据成员X0、YO、以及Z0。

同理,D3Plane::D3Plane(D3Line& r1,D3Point& r2) : D3Line(r1)中的D3Line(r1)也将调用D3Line的缺省拷贝构造函数去初始化D3Plane类中的D3Line类的基类子对象的数据成员X0、YO、、Z0以及X1、Y1、Z1。

10.2.3 私有继承

如果将例10-3中的公有继承改为私有继承:

struct D3Point

{

… //同例10-3

};

struct D3Line : private D3Point

{

… //同例10-3

};

struct D3Plane : private D3Line

{

… //同例10-3

};

则程序在编译时会报告4个出错信息。如:不能在D3Plane中的Show函数中调用GetX0函数,也不能直接访问Y0、Z0,以及在main函数中不能用L.Z0的表达式直接访问对象L 的数据成员Z0。

原因何在呢?在D3Plane中的Show函数中有下面语句:

cout<<"X0="<

GetX0是D3Point类中的公有成员,但通过私有继承之后已经成为D3Line中的私有成员,此时在D3Line中尚可直接调用该函数,但是在D3Line的派生类中已经不能直接访问该函数,即便是:D3Plane从D3Line类公有继承也不行。类似的,D3Point类中的保护成员Y0、公有成员Z0通过私有继承已经成为D3Line类中的私有成员,在D3Line类的派生类中不能直接访问他们。由此可见,私有继承就象一堵墙,阻止了在间接派生类中直接访问间接基类中的任何成员。间接派生类唯一的办法是通过自己的基类(即直接派生类)提供的接口来间接访问它间接基类中的成员。

另外,由于私有继承,Z0在D3Line类访问属性已经变为私有属性,水平部分当然不能直接访问它。此时要在水平部分的main函数中去掉对L.Z0的使用:

例10-4 将例10-3中的公有继承改为私有继承后修改程序的例子。

void main(void)

{

D3Point P1(10,20,30),P2(100,200,300),P3(400,500,600);

P1.Z0=P2.Z0=P3.Z0=50;

D3Line L(P1,P2);

L.Show();

L.Z1=250;// 去掉了对L.Z0的使用

D3Plane PL(L,P3);

PL.Z2=800;

PL.Show();

cout<<"size of D3Point is "<

cout<<"size of D3Line is "<

cout<<"size of D3Plane is "<

}

同时对D3Plane类的Show函数做如下修改:

void D3Plane::Show()

{

D3Line::Show();

cout<<"X2="<

}

在上面的Show函数中,通过成员名限定表达式D3Line::Show()对D3Line类的Show函数进行了调用。D3Line::Show()应该理解为this->D3Line::Show(),调用的结果是显示D3Line 类对象中的X0、Y0、Z0和X1、Y1、Z1。这就是通过D3Plane类的直接基类D3Line中的操作去访问D3Plane类的间接基类D3Point中的成员的方法。如果D3Line类不提供相应的操作,则在D3Plane类将无法访问D3Point类中的任何成员。

10.2.4 保护继承

如果将例10-3中的公有继承改为保护继承,则程序在编译时会报告1个出错信息。即

在main函数中的L.Z0=L.Z1=250;语句中不能用L.Z0的表达式直接访问对象L的数据成员Z0。

道理很简单,D3Point类中公有数据成员通过保护继承已经成为D3Line中的保护成员,此时在D3Line类和D3Line类的派生类中可直接调用该函数,但是在main函数这个水平模块部分不能直接访问它,因此出错。由于D3Point类中没有提供设置Z0的值的公有成员函数,因此唯一的解决办法是取消使用L.Z0表达式。

基类中由protected修饰的成员称为类的保护成员。另外,基类中的公有成员和保护成员在保护继承的作用下会在派生类中产生保护的基类子对象,即保护的基类子对象的各个成员的访问属性是保护属性。总的来讲,在保护成员所在类中可以直接访问类中的保护成员;在保护的基类子对象所在类中可以直接访问保护的基类子对象的各个成员。在水平模块中则既不能访问类的保护成员也不能访问派生类中产生保护基类子对象中的成员。

例10-5访问类的保护成员以及派生类的保护基类子对象的各个成员的应用程序举例。

#include "iostream.h"

class A

{

public:

int Y;

protected:

int X;

};

class B : public A

{

public:

void f1();

};

void B::f1()

{

X=10;

cout<<"X="<

}

class C : protected A

{

public:

void f2();

};

void C::f2()

{

X=20;

cout<<"X="<

}

class D : protected C

{

public:

void f3();

void f4();

// void f5();

};

void D::f3()

{

A a;

a.Y=300;

X=30;

cout<<"X="<

cout<<"a.Y="<

}

void D::f4()

{

B b;

b.Y=400;

cout<<"b.Y="<

}

/*void D::f5()

{

C c;

c.Y=500;

cout<<"c.Y="<

}*/

void main(void)

{

A a;

B b;

C c;

D d;

//a.X=100;

//b.X=200;

//c.X=300;

b.f1();

c.f2();

d.f3();

d.f4();

//d.f5();

}

程序中注释掉的语句和函数都是非法的。首先,main函数中的a.X=100; b.X=200;以及c.X=300;都是企图在水平模块访问类中保护成员,因此非法。其次,f1函数中的X=10; f2函数中的X=20;以及f3函数中的X=30;都是分别对B、C、D类中通过继承得到的保护的基类子对象的数据成员X的赋值操作。如:X=10应该理解为this->X=10。

函数f3中的a.Y=300;是对类A对象公有数据成员的赋值操作,合法。函数f4中的b.Y=400;是对类B对象公有的基类子对象的数据成员X的赋值操作,因此也合法。而函数f5中的c.Y=500;为非法赋值操作的原因是:类C从类A中保护继承,类A中的公有数据成员Y继承到类C中后,成为类C的保护基类子对象成员,其访问属性是保护属性,对它的

直接访问只能在类C中进行,在类C的派生类D中对类C对象保护成员的访问C++不支持。正确的使用方法应该对程序进行如下修改:

class C : protected A

{

public:

void f2();

void f5();

};

void C::f5()

{

C c;

c.Y=500;

X=50;

cout<<"X="<

cout<<"c.Y="<

}

此时对类C对象的成员c.Y的访问是在类C中进行,因此合法,可以编译通过并且得到预期的运行结果。

10.3多继承

上面讨论的继承中,派生类的基类都只有一个,因此称为单继承。如果派生类从多个基类派生,则称为多继承。声明多继承的的一般形式是:

class 派生类名 : 继承方式基类名1,…,继承方式基类名n

{

派生类新增成员的声明

};

其中,关于派生类的类说明符可以是class,也可以是struct,但不能是union的解释与单继承中解释相同。派生类名也应该是C++的合法标识符。继承方式同样可以是:public、protected、或private,它们的含义也与单继承相同。基类名1,…,基类名n 是派生类的n个基类的类名。关于派生类新增成员的声明的解释也可以参看单继承部分的解释。

多继承可以看成是单继承的扩充。在多继承中,每个基类与派生类的继承关系可以通过将这个基类与派生类看成是一个单继承来进行讨论。此时,以n个基类中某一个基类为当前类,则它的直接派生类和间接派生类将构成程序模块的垂直部分,而另外的n-1个基类和其余部分都属于程序模块中的水平部分。对当前类各种访问属性的成员的访问,对当前类在直接派生类和间接派生类产生的基类子对象中各种访问属性的成员的访问,都可以参照单继承中规则进行处理。

例10-6 多继承的程序举例

#include "iostream.h"

struct A

{

public:

int pub_a;

void SetA(int a1,int a2){pub_a=a1;pro_a=a2;}

int pro_a;

};

struct B

{

public:

int pub_b;

void SetB(int b1,int b2){pub_b=b1;pro_b=b2;}

void fb(void);

protected:

int pro_b;

};

void B::fb(void)

{

A a;

a.SetA(10,20);

cout<<"a.pub_a="<

//cout<<"a.pro_a="<

struct C :public A,public B

{

public:

int pub_c;

void SetC(int c1,int c2,int c3,int c4,int c5,int c6);

void ShowC(void);

protected:

int pro_c;

};

void C::SetC(int c1,int c2,int c3,int c4,int c5,int c6)

{

SetA(c1,c2);

SetB(c3,c4);

pub_c=c5;pro_c=c6;

}

void C::ShowC(void)

{

cout<<"pub_a="<

struct A {

public:

A(int x){ a=x; cout<<"a="<

private:

int a;

};

struct B {

public:

B(int x){ b=x; cout<<"b="<

private:

int b;

};

struct B1 {

public:

B1(){ b1=100; cout<<"b1="<

~B1(){cout<

private:

int b1;

};

struct C {

public:

C(int x){ c=x; cout<<"c="<

private:

int c;

};

struct D {

public:

D(int x){ d=x; cout<<"d="<

private:

int d;

};

struct E : public B1,public B,public A

{

public:

E(int x1,int x2,int x3,int x4,int x5,int x6,int x7);

~E(){cout<

private:

C c1,c2;

D d1,d2;

int e;

};

E::E(int x1,int x2,int x3,int x4,int x5,int x6,int x7) : A(x1),\

B(x2),d2(x6),d1(x5),c2(x4),c1(x3)

{

e=x7;

cout<<"e="<

}

void main(void)

{

E obj(1,2,3,4,5,6,7);

}

程序运行结果为:

b1=100 default constructor of class B1 is called!

b=2 constructor of class B is called!

a=1 constructor of class A is called!

c=3 constructor of class C is called!

c=4 constructor of class C is called!

d=5 constructor of class D is called!

d=6 constructor of class D is called!

e=7 constructor of class E is called!

7 destructor of class E is called!

6 destructor of class D is called!

5 destructor of class D is called!

4 destructor of class C is called!

3 destructor of class C is called!

1 destructor of class A is called!

2 destructor of class B is called!

100 destructor of class B1 is called!

从程序中可以看出,成员初始化列表中各项的参数均取自参数表0。各构造函数的调用顺序仅仅与他们被继承时声明的顺序先B1类, 再是B类, 最后是A类相关,而与他们在成员初始化列表中的顺序A(x1), B(x2)无关。并且,关于类B1构造函数的调用在成员初始化列表中根本没有出现,但却是被最先调用,其原因就是B1类在声明时最先被继承,并且是通过调用B1类的缺省构造函数来初始化B1类子对象的。同时,对象成员c1的声明先与c2,因此尽管成员初始化列表中写的是c2(x4),c1(x3),但构造时却先构造c1,然后构造c2。另外,尽管在成员初始化列表中有d2(x6),d1(x5),c2(x4),c1(x3)的顺序,但类C的对象c1,c2却先被构造,原因就是他们在类中先被声明。并且新增数据成员e最后被构造。

另外,根据程序的运行结果可以看出,后构造的先析构,先构造的后析构。因此析构顺序与构造顺序严格相反。如果将构造看成压栈,将析构看出出栈,则构造顺序和析构顺序满足后进先出的堆栈操作规则。

10.4.2派生类的拷贝构造函数

在讨论拷贝构造函数时曾经得到关于拷贝构造函数被调用的场合与被调用的时机的结论:当用类的一个对象去初始化该类的另一个对象时;或函数的形参是类类型对象,调用函数进行形参和实参结合时;以及如果函数的返回值是类类型对象,函数调用完成返回时,拷贝构造函数都会被调用。用户可以通过显式声明和定义拷贝构造函数去规定拷贝构造的

操作语义。并且,当没有显式定义拷贝构造函数,系统会自动生成一个缺省的拷贝构造函数。缺省的拷贝构造函数用类的一个对象的各个成员的值依次去初始化该类的另一个对象的各个对应的成员。另外,在继承产生派生类的情况下,创建派生类对象时,如果在派生类的构造函数中没有列出对基类构造函数的调用,系统会自动的调用基类的缺省构造函数来初始化基类子对象。

现在的问题是:在最一般的情况下,由于派生类中有基类子对象、对象成员、以及派生类新增的数据成员这三类成员,派生类的拷贝构造函数如何对这三类成员进行拷贝赋值操作?并且,如果用户没有显式声明和定义派生类的拷贝构造函数,系统是否会象构造函数那样自动调用基类和对象成员所在类的拷贝构造函数来对基类子对象和对象成员进行拷贝赋值操作?

结论是:(1)用户可以象声明和定义派生类构造函数那样去声明和定义派生类的拷贝构造函数,此时三类成员的拷贝赋值操作分别由成员初始化列表中列出的各自所在类的拷贝构造函数完成。对未被列出的调用,系统将调用缺省的构造函数而不是缺省的拷贝构造函数去初始化对应的成员。(2)如果派生类中没有显式定义拷贝构造函数,系统会自动调用三类成员所在类的缺省拷贝构造函数来完成对三类成员的拷贝赋值操作。(3)派生类拷贝构造函数被调用的场合与被调用的时机与原先非派生情况下得到结论相同。(4)各拷贝构造函数的调用顺序与创建派生类对象时各构造函数的调用顺序相同。

派生类拷贝构造函数在类中声明的一般形式是:

派生类名(派生类名& r);

其中,r是引用对象名。

派生类拷贝构造函数定义的一般形式是:

派生类名::派生类名(派生类名& r):成员初始化列表

{

// 函数体

}

成员初始化列表的一般形式是:

基类名1(r),…, 基类名k(r), 对象成员名1(r.对象成员名1),

…,对象成员名n(r.对象成员名n)

下面通过例子来说明派生类拷贝构造函数的声明,定义和使用。

例10-8 派生类拷贝构造函数的声明,定义和使用的应用程序举例。

#include "iostream.h"

struct A {

public:

A(){a=1;}

A(A& x){a=x.a; cout<<"copy constructor of class A is called!\n";}

void SetA(int x){a=x;}

void ShowA(){cout<<"a="<

private:

int a;

};

struct B {

public:

B(){b=2;}

B(const B& y){b=y.b; cout<<"copy constructor of class B is called!\n";}

void SetB(int y){b=y;}

void ShowB(){cout<<"b="<

private:

int b;

};

struct C : public A

{

public:

C(){c=3;}

C(C& z);

void SetC(int n);

void Show();

private:

B objb;

int c;

};

C::C(C& z) : A(z),objb(z.objb)

{

c=z.c; cout<<"copy constructor of class C is called!\n"; }

void C::SetC(int n)

{

objb.SetB(n);

}

void C::Show()

{

ShowA();

cout<<"objb.b is ";

objb.ShowB ();

cout<<"c="<

}

void main(void)

{

C obj1;

obj1.SetA(10);

obj1.SetC(20);

C obj2(obj1);

cout<<"Now,the value of the members of obj2 are:"<

obj2.Show();

cout<<"Also,the size of obj2 is "<

程序的运行结果为:

copy constructor of class A is called!

copy constructor of class B is called!

法律关系

第五章法律关系 由杭州小保姆受百万遗赠案件中的法律关系引出本章内容: 杭州叶老先生是一名裱画师,2000年去世后留下一大笔遗产,价值达百万元,叶先生先后留下两份遗嘱,一份自书遗嘱,一份公证遗嘱,均表示去世后将自己的财产赠与小保姆,叶老先生去世后,两个女儿将其父的画拿走,小保姆向法院起诉,要求全部财产遗赠给自己。两审法院皆判小保姆胜诉,老画师的遗嘱合法有效。 第一节法律关系概述 一、概念 法律关系是依法存在的,在法律规范调整社会关系的过程中所形成的人们之间的权利和义务关系。 在历史上,法律关系的概念最早来源于罗马法之法锁(法律的锁链)。法锁的观念形象地描述了债作为私法关系存在的约束性和客观强制性,为近代法律关系的创立奠定了基础。作为一个专门的概念,法律关系是由19世纪历史法学派的主要代表人物德国法学家萨维尼在《当代罗马法体系》中第一次明确提出的。法律关系最初被用在私法领域,随着法律与法学的发展,已成为法理学中具有一般意义的概念。 法律关系的三要素:主体、客体和内容。 法律关系属于思想社会关系和上层建筑。 二、特征 1、法律关系是根据法律规范建立的一种社会关系,具有合法性 包含三层含义:(1)法律规范是法律关系产生的前提,(2)法律关系不同于法律规范调整或保护的社会关系本身,(3)法律关系是法律规范的实现形式,是法律规范的内容在现实社会生活中得到具体贯彻。 法律关系是人与人之间的合法关系。非法同居关系,未经认可的收养关系都是事实关系,不能看作是法律关系,但又可能与法律的适用相关联,成为法律事实。上述案例中,叶老先生的遗嘱合法有效,遗赠合法,因为叶老先生和小保姆之间形成了继承法律关系。 举例:(1)如孙某和李某签订购房合同规定:孙某将租住张某的房屋于2009年10月1日前卖给李某,李某支付人民币10万元,李某明知该房屋属于张某,仍于2009年9月底将房款交给孙某。 孙某和李某之间存在合同法律关系吗? 无权处分李某不构成善意取得 (2)孙某因赌博欠李某五万元,孙某和李某之间构成债权债务法律关系吗? 练习:下列哪些情形属于法律关系的范畴?() A 无行为能力人与完全行为能力人之间的法律权利义务关系(如父母与未成年子女之间的亲子关系) B 某研究会章程所确定的权利义务关系 C 甲某因赌博欠乙某5万元的债权债务关系 D 未婚男女同居关系 2、法律关系是体现意志性的特种社会关系,具有意志性 泸州遗赠纠纷案,与杭州小保姆案的区别 只有当个人意志符合国家意志时,其行为才能导致受国家强制力保护的结果

民法总论 第十章__代理

第十章代理 一、课时安排:2学时 二、教学目的及要求 了解代理的含义及特征;熟悉代理权行使的规则;掌握滥用代理权、无权代理及表见代理的认定依据和处理方法。 三、主要教学内容 第一节代理制度概述; 第二节代理权的行使; 第三节无权代理 第四节代理关系的消灭。 四、本章重点: 代理权的含义;代理权的行使规则;滥用代理权、无权代理、表见代理的具体表现形似及处理方式。 五、本章难点:表见代理。 六、教学方法: 主要是通过案例分析,让学生理解代理制度在现代社会的重要性,把握行使代理权的基本规则以及无权代理、滥用代理权的判断方法和处理方式。 七、思考题: 1、简述代理的含义和特征。 2、简述代理权行使的基本要求。

3、简述无权代理的表现及法律后果。 4、简述滥用代理权的表现及法律后果。 5、简述表见代理的构成要件及法律后果。 八、附《第十章:代理》讲义:

第十章代理 第一节代理的概述 实例: 甲因脚腕扭伤,不能外出,同学乙准备进城购物,甲委托乙为自 己代买一双运动鞋; 甲不识字,找到乙求助,请求其为代自己为远在外地上学的儿子 写一封信,告知家里的情况,乙表示同意。 甲因身体有病,特委托邻居乙帮自己卖掉1000斤小麦,乙在卖掉 甲的小麦后,发现一家种子公司,正在销售蔬菜种子,于是从卖小麦的货款中拿出300元,为甲买了冬季的蔬菜种子。回家后,甲拒绝接受蔬菜种子。 甲接到丈夫单位的电话,称其丈夫在单位发生工伤事故,但身边 2岁的女儿无人照料,于是,委托邻居乙帮助其照顾女儿,乙表 示同意。 结论:生活中,求助他人为自己做事的情况常有发生,但有些情况会 产生法律上的代理后果,有的情况则不会产生法律上的代理后果,那 么,什么事法律上的代理? 一、代理的概念和特征; 1:代理的概念:

会计备考经济法基础 第04讲_法律关系、主体的种类、客体、内容

本单元考点框架 考点2:法律关系主体的种类(★★★)(P4)

【例题1·单选题】下列自然人,属于无民事行为能力人的是()。(2018年)A.15周岁的小赵,先天腿部残疾 B.70周岁的老钱,已经不能完全辨认自己的行为 C.8周岁的小孙,智力超常 D.20周岁的小李,先天智障,完全不能辨认自己的行为 【答案】D 【解析】符合下列两个情形之一的,为无民事行为能力人:(1)年龄<8周岁;(2)完全不能辨认自己行为。在本题中,选项ABCD年龄均已达到8周岁;选项A精神状态无异常,属于限制民事行为能力人;选项B“不能完全辨认自己行为”,应为限制民事行为能力人;选项C并未出现“完全不能辨认自己行为”,属于限制民事行为能力人;选项D“完全不能辨认自己行为”,属于无民事行为能力人。 【例题2·单选题】下列公民中,视为完全民事行为能力人的是()。(2017年) A.赵某,9岁。系某小学学生 B.王某,15岁。系某高级中学学生 C.张某,13岁。系某初级中学学生 D.李某,17岁。系某宾馆服务员,以自己劳动收入为主要生活来源 【答案】D 【解析】(1)“视为”二字极为关键,它们提示考生题目考查的是16周岁以上不满18周岁的年龄区段,看透这一点,此题可以立即锁定选项D;(2)主要法律依据:16周岁以上不满18周岁的公民,以自己的劳动收入为主要生活来源的,视为完全民事行为能力人。

【例题3·单选题】赵某,15周岁,系甲省体操队专业运动员,月收入3000元,完全能够满足自己生活所需。下列关于赵某民事行为能力的表述中,正确的是()。(2018年) A.赵某视为完全民事行为能力人 B.赵某属于完全民事行为能力人 C.赵某属于限制民事行为能力人 D.赵某属于无民事行为能力人 【答案】C 【解析】“视为完全民事行为能力人”应同时满足2个条件:(1)16周岁以上(≥16周岁)的未成年人(<18周岁);(2)以自己的劳动收入为主要生活来源。在本题中,赵某的年龄未落入16-18周岁区间,仍属于限制民事行为能力人(再熬1年吧)。 【例题4·多选题】下列关于自然人民事行为能力的表述中,正确的有()。(2018年) A.14周岁的李某,以自己的劳动收入为主要生活来源,视为完全民事行为能力人B.7周岁的王某,不能完全辨认自己的行为,是限制民事行为能力人 C.18周岁的周某,能够完全辨认自己的行为,是完全民事行为能力人 D.20周岁的赵某,完全不能辨认自己的行为,是无民事行为能力人 【答案】CD 【解析】(1)如欲“视为完全民事行为能力人”应当同时满足2个条件:①年龄处于≥16周岁且<18周岁区间(选项A李某的年龄未落入该区间);②以自己的劳动收入为主要生活来源。(2)选项B:不足8周岁的王某,不论精神状态如何,均只能界定为无民事行为能力人。(3)选项C:①年龄≥18周岁;②能够完全辩认自己行为;周某属于完全民事行为能力人。(4)选项D:“完全不能”辨认自己行为的人,不论年龄几何,只能是无民事行为能力人。 考点4:自然人的刑事责任能力(★)(P5) 1.刑事责任年龄 (1)已满16周岁的人犯罪,应当负刑事责任。 (2)已满14周岁(≥14周岁)不满16周岁(<16周岁)的人,犯故意杀人、故意伤害致人重伤或者死亡、强奸、抢劫、贩卖毒品、放火、爆炸、投毒罪(8种)的,应当负刑事责任。 2.对特殊年龄段自然人的量刑规则 表1-8 未成年人犯罪的具体情形处刑规则

反方:动物不能成为法律关系的主体

反方:动物不能成为法律关系的主体 一、破题 1、动物:由细胞组成、能自由移动、从其他植物或动物身上获取能量的有机体。在这里包 括害虫、饲养食用的动物、宠物等。 2、法律关系:指调整人们行为过程中形成的权利、义务关系。 3、主体:指主体是实践活动和认识活动的承担者;客体是主体实践活动和认识活动指向的对象。 4、法律关系的主体:法律关系的参加者,即在法律关系中享有权利或负有义务的自然人或 法人。 二、论点 1、法律是人的法律,是规范人的行为的准则,动物的行为不能被规范。 法是由国家制定或认可并有国家强制力保证其事实的,反映统治阶级的意志,通过规定人们在相互关系中的权利和义务。以确认、保护和发展对统治阶级所期望的社会关系和价值目标的行为规范体系。动物们的行为应当由自然界的一般规律进行支配。自然界的规律和秩序,人类社会的法不应该也不可能去调整。 2、动物成为法律关系的主体没有必要性。 需要保护就可以成为法律关系的主体吗?那植物、山川河流也是需要无条件的保护的。 如果说,感受苦乐是成为一个主体的条件。(后面的反驳我想不到了) 3、现实操作不可能。 实践操作困难,一是动物界定问题。如果动物当做客体看待,是不是要确权确认。把整个动物界当做整体看待,是不是不能食用、买卖,那蚊子咬了你一口,你一巴掌拍死它,可是明显违反了罪责刑相适应的原则。如果是群体的话,一只狮子吃掉一只羚羊是不是就要承认自己的罪责呢?这在现实操作中,根本不可能。 4、仅仅是概念美容,而非实质的上升。 德国著名民法学家科拉也认为《德国民法典》第90a条关于“动物不是物……”的规定是“概念美容”。即使将动物和人类都上升为主体和客体的地位,其实质仍然是要求人为一定的行为或不为一定的行为,动物在法律关系中只能被动的接受人类提供的福利和好处,这种被动性,正好说明动物是人类支配、管理、和同情的对象,是福利的被施舍者。这体现在法律上,只能是客体而非主体。被保护的权利,而一个被,其实就是客体。 5、法律的概念、主体的独立性和主体扩展条件等 民法是调整平等主体之间的财产关系与人身关系的法律。 法律人格者应具有自身的独立性,法律有一套特定的概念系统。独立性是法律人格这一概念的构成要件,动物无法表达思想,不能同人类交流和沟通,宠物动物和经济动物,与人类之间存在现实的从属依附关系,因此动物在人类社会中无法具有独立性,不能被赋予法律人格。没有法律人格,何来法律关系的主体? 意志自由是成为法律主体的必要条件。法律关系的主体必须在自由意志的前提下具有权利能力和行为能力,必须能够明确的主张自己的权利,能严格地履行法定或约定的义务,并且能够在违法时候承担相应的责任,动物不能主张自己的权利,不能为权利而主张,动物无法为自己行为的后果负责,人类也不应当苛求动物为其行为所产生的不良后果承担法律责任。

继承法习题1

★继承法(第二版)(ZK063B) 第一章继承制度和继承法 1、【185345】(单项选择题)在现代法学上,继承专指()。 A.承接 B.传递 C.身份继承 D.财产继承 【答案】D 2、【185347】(单项选择题)在()时期,不可能存在真正意义上的继承。 A.原始社会公有制 B.奴隶社会 C.资本主义社会 D.社会主义社会 【答案】A 3、【185348】(单项选择题)在中国,奴隶社会时期的继承制度是以统治阶级的()来加以规范的。 A.礼 B.成文法 C.民法 D.继承法 【答案】A 4、【185349】(单项选择题)()继承法的特点是废除了身份继承,实行财产继承。 A.原始社会 B.奴隶社会 C.资本主义社会 D.社会主义社会 【答案】C 5、【185350】(单项选择题)根据继承人继承被继承人遗产的范围,我国继承法施行的是()原则。 A.共同继承 B.单一继承 C.限定继承 D.概括继承 【答案】C 6、【185351】(单项选择题)《中华人民共和国继承法》是()。 A.实质意义上的继承法 B.形式意义上的继承法 C.纯粹意义上的继承法 D.非纯粹意义上的继承法 【答案】B 7、【185352】(单项选择题)继承法是()。 A.私法 B.公法 C.任意性规范

【答案】A 8、【185353】(单项选择题)继承法与宪法是()的关系。 A.母法与子法 B.子法与母法 C.部分与整体 D.整体与部分 【答案】B 9、【185354】(单项选择题)继承法遵循()的原则,规定:“夫妻一方死亡后另一方再婚的,有权处分所继承的财产,任何人不得干涉。” A.保护公民私有财产继承权 B.男女平等 C.养老育幼 D.互凉互让团结和睦 【答案】B 10、【185372】(单项选择题)继承的首要特征是()。 A.被继承人死亡或被宣告死亡 B.被继承人留有遗产 C.被继承人有合法的继承人 D.继承遗产必须清偿死者的债务 【答案】A 11、【185375】(单项选择题)继承法是根据()制定的。 A.宪法 B.民法通则 C.婚姻法 D.民事诉讼法 【答案】A 12、【185355】(多项选择题)立嗣与现代收养制度的不同点在于()。 A.男子无后可立嗣子 B.女子无后可立嗣子 C.所立嗣子仅限于男性 D.立嗣者须在生前立嗣 E.立嗣者可在其死后由亲属为其立嗣 【答案】A,C,E 13、【185356】(多项选择题)根据继承人继承财产的方式,继承可分为()。 A.财产继承 B.身份继承 C.祭祀继承 D.法定继承 E.遗嘱继承 【答案】D,E 14、【185358】(多项选择题)继承法调整的对象有()法律关系。 A.法定继承 B.遗嘱继承

法律关系主体

法律关系主体 一.概述 法律关系主体又称权利主体,义务主体,即法律关系的参与者,为法律关系中权利的享受者和义务的承担者。享有权利不承担义务,或者,承担义务不享有权利的人,我认为仍然应该是主体(a person)。如果存在这样一人(one),他不承担义务但享有权利,或者不享有权利却承担义务,那么在我看来,该人就是一个法律观念上的主体(person) 法律关系的主体的分类: 在中国,根据各种法律的规定,能够参与法律关系的主体包括以下几类: (1)公民(自然人)。这里的公民既指中国公民,也指居住在中国境内或在境内活动的外国公民和无国籍人。 (2)机构和组织(法人)。这主要包括三类:一是各种国家机关(立法机关、行政机关和司法机关等);二是各种企事业组织和在中国领域内设立的中外合资经营企业、中外合作经营企业和外资企业;三是各政党和社会团体。 (3)国家。在特殊情况下,国家可以作为一个整体成为法律关系主体。

二.对法律主体的理解 1-法律义务在义务人方面,不包含任何意志的运用,因此为法律义务的存在,义务人并不需具有意志;但为法律权利得以实现,意志却是必要的,故一如法律权利之实现所关涉之程度,主体必须具有意志。 2-但是当我们分析法律上的主体概念时,却发现主体概念和权利概念的关系非常微妙。主体不仅不能轻易地被看作权利的辅助概念,相反,似乎主体概念有更核心的意义。哈特曾经这样说出了权利和能力背后的主体问题:“授予私人权力的规则,要得到理解的话,我们就必须从行使这些权力的那些人的观点来考察它们。于是,它们显现为是由法律引入社会生活中、关于强制控制要素之上的添加要素。情况之所以如此,乃是因为持有这些法律权力可以使私人公民成为私人立法者,而如果不存在这种规则,他将仅仅是一个责任的承担者。授权规则使他们有权能在自己可以建立契约信托、遗嘱和其他权利和义务结构的领域,决定法律运作的方式。为什么不承认以这种特殊方式被使用,并授予这种极大的、与众不同的便利条件的规则是不同于强加责任的规则呢?” 三.法律主体在法律中的意义

民法习题——第2章

第二章民事法律关系 一、单项选择题 1.民事法律事实必须是() A.与当事人意志无关的客观现象 B.与当事人意志有关的法律事实 C.能引起民事法律关系发生、变更和消灭的客观事实 D.所有的客观现象 2.当义务人拒不履行应尽义务时,权利人可诉请人民法院以()之诉的方式予以保护。 A.确认 B.给付 C.形成 D.请求 3.绝对权是一种()的民事权利。 A.权利主体特定、义务主体不特定 B.权利主体不特定、义务主体特定 C.权利主体和义务主体均不特定 D.权利主体和义务主体均特定 4.作为民事法律事实的行为() A.只能是合法行为 B.只能是违法行为 C.可以是舍法行为,也可以是违法行为 D.只能是表意行为 5.凡权利主体行使权利时.任何人都负有不妨害其行使的义务的权利称为() A.财产权 B.人身权C.绝对权 D.相对权 6.抗辩权是针对()的权利。 A.物权 B.债权 C.请求权 D.形成权 7.权利人依自己单方的意思表示.使民事法律关系发生、变更或消灭的权利为() A.形成权 B.请求权 C.抗辩权 D.主权利 8.在基础权利受到侵害或有受到侵害的现实危险时,为援助基础权利而发生的权利为()A.原权利 B.救济权 C.从权利 D.支配权 9.某甲杀害了某乙.某乙的继承人因乙死亡而继承某乙的遗产。引起该继承关系的法律事实属于() A.民事法律行为 B.事实行为 C.违法行为 D.自然事实

二、多项选择题 1.下列社会关系中.()关系属于民事法律关系。A.债权债务 B.税收C.相邻 D.财产继承 E.财政 2.下列民事权利中,()属财产权。 A.承包经营权 B.债权 C.发表权 D.名称权E.修改权 3.下列民事权利中,()属人身权。 A.肖像权 B.留置权 C.名誉权D.共有权 E.荣誉权 4.财产所有权属于()权。 A.支配 B.人身 C.财产 D.形成 E.绝对 5.债权属于()权。 A.请求 B.人身 C.财产 D.相对 E.绝对 6.基于自然人姓名而发生的法律关系属于()A.绝对法律关系 B.相对法律关系 C.单一民事法律关系 D.复合民事法律关系 E.人身法律关系 7.民事法律事实的特征表现为() A.民事法律事实属于客观现象 B.特殊情况下,主观现象也可成为民事法律事实C.民事法律事实由法律加以规定 D.民事法律事实能引起一定的民事法律后果E.民事法律事实与人的意志无关 三、简答题 1.民事法律关系有何特征? 2.简述民事法律关系的要素。 3.什么是民事法律事实?其有何特征? 4.简述民事权利行使的方式和原则。 5.简述权利滥用的构成条件。 6.民事责任有何特征?

公证处常见公正类型

公证处常见公正类型文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

一、公证事项类有: 1.合同公证 合同是平等主体的自然人、法人、其他组织之间设立、变更、终止民事权利义务的协议,主要包括买卖合同、房屋租赁合同、抵押贷款合同、土地使用权转让合同等。公证机构在办理合同公证时,对合同订立各方的主体资格、意思表示的真实性、程序的合法性、完整性加以核查并证明。 2.继承公证 继承是指将死者生前所有的,死亡时遗留的个人合法财产,依法转移给他人的法律制度。继承可分为法定继承和遗嘱继承,继承公证是指公证机构依照法定程序,对被继承人的法定继承人或遗嘱继承人具有继承被继承人个人合法财产权利的真实性、合法性予以证明的活动。 3.委托公证 委托公证是指公证机构根据当事人的申请,对当事人的授权委托行为依法证明其真实、合法的活动。但并非所有的法律行为均可委托,涉及身份关系的行为,诸如结婚、离婚、遗嘱等依据法律规定不得委托。 4.声明公证

声明是指自然人、法人或者其他组织在民事、经济活动中所作出的公开的意思表示。它表现为书面形式,即声明书。声明书公证是指公证机构根据声明人的申请,依法证明其声明行为真实、合法的活动。声明公证的意义在于,通过公证机构证明声明人的意思表示真实,防止他人伪造、篡改或者冒名顶替,使接受声明书的当事人消除疑虑。 5.赠与公证 赠与公证是指公证机构根据当事人的申请,依法证明赠与人赠与财产,受赠人接受赠与财产或赠与人与受赠人签订的赠与合同行为真实、合法的活动。 6.遗嘱公证 遗嘱公证是指公证机构按照法定程序证明遗嘱人设立遗嘱行为真实、合法的行为。我国《继承法》规定,遗嘱分为自书、代书、口头、录音、公证遗嘱五种形式。公证遗嘱是公证机构按照法定程序和要求制作的遗嘱,属于独立的遗嘱形式。其制作程序、要求和效力都有别于其他形式的遗嘱。 7.夫妻财产协议约定公证/婚前财产协议约定公证 夫妻财产协议约定公证是指公证机构根据当事人的申请,依法证明夫妻双方就婚姻关系存续期间所得的财产以及各自婚前财产归属等事宜达成的书面协议的真实性、合法性活动。

第一节 继承的概念与特征

第一节继承的概念与特征 一、继承的概念 继承,是指将死者生前所有的财产于死亡时依法转移给他人所有的法律制度。 在这项法律制度中,生前享有财产因死亡而移转给他人的死者为被继承人;被继承人死亡时遗留的财产为遗产;依照法律规定或者被继承人的合法遗嘱取得被继承人遗产的人为继承人;继承人依照法律的直接规定或者被继承人所立的合法遗嘱享有的继承被继承人遗产的权利就是继承权。继承人只能是自然人,继承权也只能为自然人享有。 按照继承的依据不同可分为法定继承和遗嘱继承。法定继承,是指根据法律直接规定的继承人的范围、继承人继承的顺序、继承人继承遗产的份额及遗产的分配原则继承被继承人的遗产。遗嘱继承,是指继承开始后,按照被继承人所立的合法有效遗嘱继承被继承人遗产的继承制度。 二、继承的特征 (一)继承的发生以被继承人死亡和留有遗产等法律事实的存在为前提 继承的发生需要具备两个条件:一是被继承人的死亡,这是继承关系产生的原因;二是死者留有遗产,这是继承的财产条件。如果死者没有遗产,则继承就不能发生。 (二)继承的主体只能是自然人,且必须是与被继承人有特定身份关系的人 我国宪法规定,每一个公民都享有对私有财产的继承权,可以作为继承人。但在具体的继承关系中,继承只能基于自然人之间存在着的婚姻、家庭、血缘关系而发生。家庭、法人及其他社会组织都不能成为继承关系的主体;法人和其他社会组织只能作为遗赠受领人;国家只能在无人继承又无人受领遗赠遗产的情况下,获得无主财产。 (三)继承的客体是被继承人死亡时遗留的个人合法财产 继承人可以继承的只能是被继承人死亡时遗留的个人合法财产,而国家、集体的财产不能作为遗产被继承。而遗产的内容不仅包括被继承人死亡时遗留的个人所有的财物和债权,而且包括债务和法律规定可以继承的财产权利,如知识产权中的财产权利。因此,继承是权利义务的全面承受,即继承人要接受遗产,就得承受财产义务。 (四)继承是继承人无偿取得被继承人的遗产 继承是自然人取得财产的一种手段。按照法律规定,继承人从被继承人死亡时开始,即行使其享有的继承权,无偿地取得被继承人的遗产。这种财产所有权的转移,不是按照等价有偿原则转移财产,因而不属于商品交换关系,继承人取得被继承人的遗产,不需支付对价财产。 第二节我国继承法的基本原则 社会制度不同,继承制度的本质就不同,继承法的基本原则也不相同。我国继承法的基本原则体现着社会主义继承制度的本质,反映了具有中国特色社会主义继承制度的鲜明特点。 一、保护公民私有财产继承权 我国《宪法》第13条第2款规定:“国家依照法律规定保护公民的私有财产的继承权。”《继承法》第1条规定:“根据《中华人民共和国宪法》,为保护公民的私有财产的继承权,制定本法。”因此,保护公民私有财产继承权是被我国宪法明确肯定的我国继承法的首要基本原则,也是我国继承法的立法宗旨。 保护公民私有财产继承权,是指国家法律确认公民享有并可依法行使私有财产继承权,并保护这种权利不受非法侵害。具体包括如下含义。 1.公民死亡时遗留的个人合法财产,继承人都可以依法继承。 2.公民的遗产继承权不得非法剥夺。除有法律规定的法定事由外,继承人的继承权不因任何事由而被剥夺。

2016年10月法理学真题

2016年10月法理学真题 一、单项选择题(本大题共30小题,每小题1分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出。错选、多选或未选均无分。 1.法律全球化对一国法制的影响体现在多方面,其中不包括()。 A.推动法律观念的转换 B.影响法律人的职业化进程 C.促进法治理念的转变 D.实现各国法律制度一体化 【答案】D 【解析】根据各国的国情不同,所以不可能实现各国法律制度的一体化。 2.关于“可持续发展法”的概念,理解正确的是()。 A.可持续发展法就是环境法 B.可持续发展法即是经济法的子部门 C.可持续发展法不是法律,仅是理念 D.可持续发展法是个综合性法学概念 【答案】D 【解析】可持续发展涉及到政治经济文化等各个部门,所以可持续发展是一个综合性的法学概念。 3.从法系上来看,目前中国香港的法属于()。 A.大陆法系 B.英美法系 C.中华法系 D.亚太法系 【答案】B 【解析】英美法系的范围,除英国(不包括苏格兰)、美国外,主要是曾是英国殖民地、附属国的国家和地区,如印度、巴基斯坦、新加坡、缅甸、加拿大、澳大利亚、新西兰、马来西亚等。中国香港地区也属于英美法系。 4.下列现象中,科技对法律发生影响的是()。 A.公共汽车上的摄像头有利于公安机关破案 B.很多国家立法,禁止用克隆技术造人 C.某科学家将自己的发明卖给某工厂而获利100万 D.王某因酒瓶爆炸而向法院提起诉讼,要求生产厂家赔偿损失 【答案】D 【解析】ABC都不是科技对法律的影响。 5.原始社会规范的形式不包括()。 A.习惯 B.宗教规范

C.道德规范 D.法律规范 【答案】D 【解析】法律是由国家制定或认可的,因为原始社会没有国家,所以谈不上有法律规范形态。 6.下列关于法与正义的关系,表述正确的是()。 A.法律没有正义与不正义之分 B.正义与法律正义是一回事 C.法律有时候和正义相抵触 D.不体现正义的法不是法 【答案】C 【解析】正义是法律的精神与理论依据。法律不能违背正义的精神,背离正义的法不配成为法律。法律的制定和实施都应符合正义的精神。正义作为法律的核心思想起着指导法律的制定和实施的作用。法律是保障和实现正义的一种方式和工具。 7.法律规定“结婚的男女双方必须亲自到婚姻登记机关登记”,关于该规则表述不正确的是()。 A.该规则是义务规则 B.该规则是确定性规则 C.该规则是强行性规则 D.该规则是第二性规则 【答案】D 【解析】该规则是第一性的规则。第二性的规则更多是是保护性的规则。 8.“法者,国之权衡也。”“法者,天下之程式也,万事之仪表也。”这些主张将法的本质归结为()。 A.理性论 B.权力论 C.规范论 D.自然论 【答案】C 【解析】“程式”、“仪表”都是准则、规范的意思。意思是说法是治国的标尺,是社会的客观准则,是衡量人言行是非、功过、曲直的客观标准和必须遵守的行为规范。 9.认为法学研究的真正的也是唯一的对象便是实际存在的以规范体系表现出来的纯粹实在法的学者是()。 A.凯尔森 B.奥斯丁 C.哈特 D.康德 【答案】A 【解析】认为法学研究的真正的也是唯一的对象便是实际存在的以规范体系表现出来的纯粹实在法的学者是凯尔森。

继承法规定遗嘱必须公证才有效吗

继承法规定遗嘱必须公证才有效吗 一、继承法规定遗嘱必须公证才有效吗? 1、不一定。我国法律规定的遗嘱包括公证遗嘱、自书遗嘱、代书遗嘱、录音遗嘱以及口头遗嘱,只要符合法律规定的条件,都是有效的。 2、《继承法》第十七条:公证遗嘱由遗嘱人经公证机关办理。自书遗嘱由遗嘱人亲笔书写,签名,注明年、月、日。代书遗嘱应当有两个以上见证人在场见证,由其中一人代书,注明年、月、日,并由代书人、其他见证人和遗嘱人签名。以录音形式立的遗嘱,应当有两个以上见证人在场见证。遗嘱人在危急情况下,可以立口头遗嘱。口头遗嘱应当有两个以上见证人在场见证。危急情况解除后,遗嘱人能够用书面或者录音形式立遗嘱的,所立的口头遗嘱无效。 3、当然,一般情况下公证遗嘱具有优先性。第二十条遗嘱人可以撤销、变更自己所立的遗嘱。立有数份遗嘱,内容相抵触的,以最后的遗嘱为准。自书、代书、录音、口头遗嘱,不得撤销、变更公证遗嘱。 二、能导致遗嘱无效的情形有哪些? 遗嘱是指遗嘱人生前在法律允许的范围内,按照法律规定的方式对其遗产或其他事务所作的个人处分,并于遗嘱人死亡时发生效力的法律行为。 遗嘱无效或部分无效的情形如下:

1、无行为能力人或者限制行为能力人所立的遗嘱无效; 2、受胁迫、欺骗所立的遗嘱无效; 3、伪造的遗嘱无效; 4、遗嘱被篡改的,篡改的内容无效。 三、遗嘱被确认无效怎么办? 遗嘱无效,可以分为部分无效和全部无效两种情况。 在部分无效的情况下,根据这一无效部分不同的具体内容,对遗产要作出不同的处理。比如,倘若遗嘱所处分的是立遗嘱人和其他人的共有财产,那么,其他财产共有人有权要求他所得的份额,而只付给遗嘱继承人相应的份额。又如,遗嘱中若对缺乏劳动能力而又没有生活来源的继承人没有留下必要的财产份额,那么在财产分配中,必须先行扣下这部分人必要的份额,剩余的遗产才能按照指定的内容执行。 如果遗嘱全部无效,死者的遗产应按法定继承处理。 法定继承的遗产分配原则指的是在法定继承中确定同一顺序的 法定继承人应分得的遗产份额的基本准则。继承法第13条对法定继承的遗产分配原则做了明确规定,我们应从以下两个方面来理解: 1、同一顺序继承人继承遗产的份额一般应均等。这是法定继承中遗产分配的一般原则,即同一顺序的法定继承人应该平均分配遗产。该法条中的“一般”是指法律没有特别规定的情况。 2、特殊情况下法定继承人的继承份额可以不均等。 合法的遗嘱,自立遗嘱人去世之后就已经发生了法律效力,在此

法理学思考题

1、张某与李某是某大学同班同学且为好友。一日李某主动请张某星期天到电影院看电影。到了星期天,张某首先乘车至电影院门口等候李某。但李某突然改变主意,直到电影散场也没有来电影院。张某为此愤愤不平,提出与李某“断交”。问:李某的行为具有法律意义吗 2、张某在开车上班途中,发现赵某被汽车撞伤,倒在地上。张某将张某扶进自己的汽车,闯过六个红灯,将赵某送到医院。后张某由于违反交通管理条例的规定被交通警察罚款200元。 问题分析: (1)交通警察对张某罚款200元,体现了自然法理论的基本立场,还是法律实证主义的基本立场 (2)假如你为张某的行为辩护,那么应当站在什么样的法学立场上 3、请运用法的形式特征分析如下案件:一对夫妻在自家的房子中观看黄碟,是否应当受到法律的制裁为什么 (提示:这里关键要分析“在自家的房子中观看黄碟”是关系行为,还是个体行为) 4、在有关法系的问题上,学生甲与学生乙有一些不同的认识。甲认为:(1)法系就是指法律体 系;(2)法系的划分标准是单一的、绝对不变的;(3)在英美法系,制定法不是法的正式渊源。 乙认为:(1)法系是比较法学的概念,它与法律体系不同;(2)法系的划分标准具有相对性,因此是没有意义的;(3)在英美法系,制定法和判例法一样,都是法的正式渊源;但是,在大陆法系,判例则不是法的正式渊源,判例也没有什么作用。 你认为上述哪一种或哪些观点有道理为什么 5、某地来一外商投资,在宾馆住的时候,碰到小偷偷了钱包,外商报了案,

党委和政府知道了以后责令公安机关要限期抓到小偷,公安机关抓住小偷以后,党委和政府责令要严肃处理,严惩不贷,然后把钱包还给为外商,结果外商带着外资走了,没有在这投资,这个案例说明了什么问题外商为什么走了 6、以下关于权利义务的说法是否正确为什么 (1)“诉讼当事人要求法院依法公开审理的权利是对世权。” (2)“法律规定不得侵犯他人的自由,这一义务属于对人义务和消极义务。” (3)“在许多情况下,权利可以转让或放弃,义务不能随意转让或者放弃。” 7、根据我国1997年10月1日起生效实施的《刑法》(又被称为新刑法)第270条的规定,将为他人保管的财物或者他人的遗忘物、埋藏物占为己有,数额较大且拒不交还的行为构成侵占罪,可以处以一定的刑罚。但是,在1997年10月1日之前,在我国具有法律效力的刑事法律是1979年7月1日通过的《刑法》(又被称为旧刑法)。旧刑法并未设置侵占罪。某甲于1997年2月28日拾得他人遗忘的手提包,手提包内有巨款。在失主某乙向其讨要时,某甲却拒不归还。 问题讨论:法院是否可以对某甲追究侵占罪的法律责任为什么 8、王某与同村的张某因为琐事打架,王某不慎失手将张某打死。王某的父母向张某的父母求情,并表示愿意赔偿张家40万,希望张家不要向公安机关报案。考虑到两家是世交,关系一直很好,王家又愿意赔偿,在经过一番讨价还价之后,张某的家人答应接受赔偿,不向公安机关报案,两家“私了”。问此事能否私了为什么 9、美国纽约上诉法院在1889年曾经审理过这样一个案件:帕尔默是其祖父所立遗嘱中指定的财产继承人,因担心祖父撤销遗会改变遗嘱,便用毒药害死了自己的祖父,帕尔默因此被判处监禁。从法律角度来看,帕尔默是否有合法权利获取祖父给他的遗产在当时,如果继承人杀害了立足遗嘱人,他还能否根据遗嘱继承遗产,纽约州的遗嘱法对此未有规定。当时审理该案的法官从以往的判例中推出如下原则,即一个人不能从他的不当行为中获取利益。根据该原则,法

现行继承制度的缺陷及完善

现行继承制度的缺陷及完善 继承是一个古老的而常新的话题,自人类社会有了剩余财产以后,继承作为一种制度就与人们的社会、经济、家庭生活息息相关。继承作为取得财产的重要方式,历来为人们所重视,继承法律制度在民法的众多法律制度中,也具有其独特的作用,因此,继承法律制度历来同样为统治阶级所重视。 我国继承法颁布于上个世纪的八五年,当时,个体经济开始萌芽,私营经济尚不被承认,经济体制改革刚刚开始起步。由于众所周知的原因,在经济生活中私有财产不仅 正是基于这样的认识,笔者认为应当对现行继承制度予以增补、完善。以期能适宜于现阶段我国的社会主义市场经济环境,服务于已经入世的中国特色的社会主义。 一、现行继承法存在的缺陷 我国现行继承法采用的是限定继承原则,又称为有限责任继承原则。其核心是限制继承人对被继承人债务的清偿责任,即继承人只需在继承遗产的限度以内为被继承人清偿债务,不需以自己的财产对被继承人的债务负责。这种制度符合现代社会家庭成员人格独立、责任自负的理念,具有其积极的意义。但是它明显是保护了被继承人的利益,而忽视了被继承人的债权人的利益。作为一种法律制度,必须对所涉及当事人的权利予以平等的保护,这是现代法律维护公平、正义精神的需要,也是评判法律之善、恶的标准之一。现行继承法未给予继承人和被继承人的债权人的权益以平等的保护,是其存在严重的缺陷之一,其缺陷具体表现在以下两个方面: 1、没有对接受和放弃继承规定明确的期限,使得继承关系长期不稳定 我国继承法第二条规定:继承从被继承人死亡是开始。这意味着被继承人死亡时,被继承人的财产权利和义务就概括地转归继承人,被继承人的债权由继承人享有,被继承人的债权人只能向继承人行使;债务由继承人承担,债务人只能向继承人清偿。通常情况下继承人不仅仅只有一个,这就需要在一个合理的期限使继承关系确定下来,使被继承人的所遗留下来的债权债务能得以尽快了结。然而,继承法第二十五条规定:继承开始后,继承人放弃继承的,应当在遗产处理前,作出放弃继承的表示。没有表示的,视为接受继承。也就是说,继承人的确定必须要到“遗产处理前”,在此之前继承人实际上都不确定,继承关系始终处于不稳定的状态。此外继承法没有规定遗产处理的期限,使得这种不稳定的状态

第2章民事法律关系习题及答案

第2章民事法律关系 一、单项选择题 1、下列不能成为民事法律关系的客体的是(B)。 A、塘中的鱼 B、夜空中的星星 C、不作为 D、企业的名称权 2、下列选项中属于不属于财产法律关系的是(C) A、所有权 B、债权 C、人格权 D、继承权 3、下列对于民事法律关系,表述不正确的是(A) A、主要根据当事人的意志发生 B、以权利义务为内容 C、均以法律明文规定而发生 D、保障措施具有补偿性 4、依据我国民法,下列不能成为民事法律关系主体的有(A) A、胎儿与死者 B、植物人 C、触犯刑法正被执行刑期的人 D、被宣告死亡但实际未死亡的人 二、多项选择题 1、下列可以为民事法律关系的主体有( ABCD )。 A、聋哑人 B、合伙企业 C、机关法人 D、个体工商户 2.下列民事法律关系属于绝对的民事法律关系的是(ACD) A、物权关系有形 B、债权关系 C、人身权关系 D、知识产权关系无形绝对特定的 3.公民甲生前立有遗嘱,指明其全部财产归女儿乙继承,则该遗嘱继承法律关系的发生有赖于下列哪些事件和行为?(AD) A、被继承人甲的死亡 B、乙具有完全民事行为能力 C、乙尚未出嫁 D、甲所立遗嘱的合法有效 4.下列属于民事法律关系的客体的是( BCD)。 A、自然人 B、物

C、智力成果 D、行为 5、民事法律关系是(ABC) A、民事主体间发生的社会关系 B、由民法调整和保护的社会关系 C、须同时具备主体、客体和内容的关系 D、当事人均有权利与义务的关系 6、下列属民事法律关系的是(AC) A、甲堆木柴于乙门口致乙通行困难,乙要求甲清除木柴 B、甲答应与乙结婚后反悔,乙要求甲履行承诺 C、甲养的鱼因鱼场出现缺口顺水游入乙的水塘,甲请求乙予以返还D、甲不在家,邻居乙为其接待来客 7、下列选项中,可以成为民事法律关系主体的有( ABCD)A、自然人 B、法人 C、其他组织 D、国家 8、下列关系中能成为我国民法调整的民事主体是(ABCD) A、与某企业签订购销合同的某行政机关 B、故意打碎他人贵重花瓶的某中学生 C、与某市场商贩发生合同纠纷的某日本留学生 D、接收他人遗赠的5岁孩童 9、下列行为不能够引起民事法律关系变动的是( AD ) A、甲酗酒开车行为。 B、甲酗酒开车撞人行为。 C、邮递员甲因将88号看成83号而为错投行为。 D、邮递员甲因错投而被公司扣除当月奖金的行为。 10、下列民事法律关系的发生是由事件引起(AC) A、甲死,甲子继承其遗产 B、精神病患者甲打伤乙而产生的求偿关系

第十章继承法律关系

第十章继承法律关系 教学目的与要求:继承法律关系属于民事法律关系的一种,是学习和掌握继承法各 项具体制度的突破口,通过讲授,让学生运用民事法律关系的原理理解继承法律关系,并把握其特殊性,深刻理解继承权的动态与静态关系,为学习继承法中的具体制度打下基础。 教学重点与难点:继承法律关系继承权继承权的丧失继承权的放弃遗产的范围 教学方法:讲授 开课学期:春季 学时:4学时(第12周) 第一节继承法律关系概述 一、继承法律关系的概念 继承法律关系是指有继承法规范调整的因公民死亡而发生的继承人与其他人之间在财产继承上的权利义务关系。 (民事法律关系,是指平等主体之间发生的符合民事法律规范的,以权利义务为内容的社会关系,是民法对平等主体间的财产关系和人身关系加以调整的结果。)其含义: 1.继承法律关系是民事法律关系的一种。 2.继承法律关系是因公民死亡而发生的法律关系 3.继承法律关系是财产继承上的民事权利义务关系 其法律特征: 1.是一种财产法律关系 2.是一种绝对财产法律关系。是权利主体特定而义务主体不特定,权利主体实现其权利不须义务主体履行某种积极的行为,义务主体仅负有不得侵害权利人行使权利的消极义务,而不负有实施一定行为的积极义务。 3.是以公民为主体一方的财产法律关系。法人、国家不能成为继承法律关系的权利主体 4.是一种与亲属关系相联系的财产法律关系。可以作为继承法律关系权利主体的都只能是与被继承人有亲属关系的人。 二、继承法律关系的要素

(一)主体 权利主体,继承人 义务主体,继承人以外的其他公民、法人。 (二)客体 只能是遗产,没有遗产就不存在继承法律关系。 (三)内容 继承人所享有的权利,即继承被继承人遗产的继承权 继承人以外的一切人都负有不得侵害继承人继承权,不得妨害、干涉继承人 继承权的行使的义务。 三、继承人与被继承人 继承人是继承法律关系的权利主体,是指依据继承法的规定在法定继承或遗嘱继承中有权继承被继承人遗产的公民。 含义: 1.是由继承法规定的 2.是得以基于继承权取得遗产的人 3.是有权承受被继承人遗产的公民 (二)分类 古代,分为遗产继承人和遗产承受人, 遗产继承人,是指继承宗祧而又继承遗产的人 遗产承受人,是指仅继承遗产的人 我国一般分为: 1.法定继承人,是依照法律规定的范围和顺序直接承受被继承人遗产的继承人。其继承权来自法律规定。 2.遗嘱继承人,是按照被继承人所立的合法有效的遗嘱而直接承受遗产的继承人。即遗嘱人在遗嘱中指定的继承人,其继承权来自依法所立的遗嘱。 在我国遗嘱继承人只能为法定继承人中的一人或数人。 (三)继承能力 又称为继承权利能力,是能够享有继承权的法律资格。属于民事权利的一种,当事人自己不能放弃。 依照继承法的规定,继承自被继承人死亡时开始,被继承人的遗产自继承开始时起必然转移与继承人,那么,只有于继承开始时生存的公民才有继承能力。 即继续存在或者同时存在原则,是指继承人于继承开始前后都存在,才具有继承权利能力,从而可以实际享有继承权 那么,在继承开始时尚未出生或者已经死亡的人,也就没有继承能力。但对于胎儿有争议。作者认为,不应确定胎儿具有权利能力,继承法规定在遗产分割时为胎儿保留必要的继承份额,只是法律为保护继承开始后出生的被继承人子女的利益的特别措施。 继承能力是一种权利能力,所以继承能力与继承人的年龄、智力等情况无关,不因当事人的民事行为能力状态不同而有所不同。 (四)继承人的法律地位 是指继承人在遗产继承过程中所享有的权利和负担的义务。 1.与非继承人之间,为继承法律关系 2.与其他继承人之间,是一种共同继承关系 权利是遗产的共有权,遗产分割的请求权,个人应得份额的处分权

继承公证告知书

继承公证告知书 公证申请人: 依据《公证法》第二十七条第二款的规定,现将你申办继承公证的法律意义、法律后果以及申办继承公证的注意事项告知如下: 一般告知 1.在办理公证过程中,本处工作人员会以下列方式(之一或者全部)搜集和固定你对申请公证的事项进行陈述、确认的证明材料: (1)请你在相关的文件上签字; (2)请你在相关的文件上按指印; (3)提取你的全部指纹; (4)对你办理公证的某些过程进行拍照; (5)对你办理公证的某些过程进行录像; (6)对你办理公证的某些过程进行录音。 本处将上述证明材料的全部或者部分作为本处出具公证书的依据予以存档。因此,对于需要你在本处签字(按指印)确认的文件,请你在签字(按指印)前务必仔细阅读。如果你存在异议,请勿签字(按指印)。如果你不能阅读,你可以请求公证员向你宣读和解释需要你签字(按指印)确认的全部文件。 2.你的申请被受理后,经过公证员审核,如果发现你所申请的事项存在法律规定的不予办理公证的情形,本处将不予出具公证书。 3.在申办公证的过程中,你主要享有以下权利: (1)在办证过程中,你对办理公证的相关材料的内容和办理公证的法律意义、法律后果有不清楚之处,你有权要求公证员进行告知和解释; (2)你在询问笔录上签字(按指印)之前,你有权要求公证员修改询问笔录,并对笔录和笔录的修改之处签字(按指印)确认。 4.在申办公证的过程中,你主要应当承担以下义务: 你有义务向本处作如实的陈述和提供真实、合法、充分的证明材料。如果你不能作如实陈述以及不能提供真实、合法、充分的证明材料,依据《公证程序规则》第四十八条第(六)项的规定,本处不予办理公证。如果因为你所作的陈述不真实,或者提供的材料虚假,本处有权拒绝出具公证书,或者撤销已经出具的公证书,并有权要求你承担相应的法律责任。 5.在本处出具公证书后,你认为公证书有错误的,有权在收到公证书之日起一年内,向本公证处提出复查,超过一年复查申请期限的,本处不再受理你的复查申请。 6.按照公证收费标准足额交纳公证费用,如因您个人原因撤回公证申请的,公证已经办结,公证费不予退还;已受理未办结的,退还已交公证费的50%。

相关主题
文本预览
相关文档 最新文档