C++程序设计课件 设计制作:徐龙琴 1
1 c++中的类有两种用法,一种是类的实例化,即生成类的对象,
并参与系统的运行 ; 另一种是通过 ______,派生出新的类,
A,复用 B.继承 C.单继承 D.多继承
2 继承具有 _____,即当基本类本身也是某个类的派生类时,底层
的派生类也会自动 继承间接基类的成员,
A,规律性 B.传递性 C.重复性 D.多样性
3 在派生类中定义的析构函数与它所属的基类 ____,
A,一定有关 B.一定无关 C.以上都不对 D,可能有关
4 在多继承中,公有派生和私有派生对于基类成员在派生类中的
可访问性与单继承 的规则 ______,
A,完全相同 B.完全不同
C.部分相同部分不同 D.以上都不对
一、选择题,
c
b
d
a
C++程序设计课件 设计制作:徐龙琴 2
5 下列关于继承的描述中,是错误的。
A析构函数不能被继承
B派生类是基类的组合
C派生类成员除了它自己成员外,还包含了它的基类的成员
D派生类中继承的基类成员的访问权限到派生类保持不变
6下列虚基类的声明中正确的是
A)class virtual B, public A
B)virtual class B,public A
C)class B, public A virtual
D)class B, virtual public A
D
D
C++程序设计课件 设计制作:徐龙琴 3
7下列对派生类的描述中,错误的是
A)一个派生类可作为另一个派生类的基类
B)派生类至少有一个基类
C)派生类的缺省继承方式是 private
D)派生类只继承了基类的公有成员和保护成员
C
C++程序设计课件 设计制作:徐龙琴 4
二 读程题:
1,#include <iostream.h>
class Base
{ public:
Base() { cout<<"Base"<<endl; } };
class Derived11, virtual public Base
{public:
Derived11() { cout<<"Derived11"<<endl; } };
class Derived12, virtual public Base
{public:
Derived12() { cout<<"Derived12"<<endl; }};
class Derived2, public Base
{public:
Derived2() { cout<<"Derived2"<<endl; } };
class Derived3, public Derived11,public Derived12,
public Derived2
{public:
Derived3() { cout<<"Derived3"<<endl; } };
void main()
{ Derived3 obj;
}
运行结果为:
Base
Derived11
Derived12
Base
Derived2
Derived3
C++程序设计课件 设计制作:徐龙琴 5
2,#include <iostream.h>
class Base
{public:
Base(int x,int y) { a=x; b=y; }
void Show() { cout<<"Base,"<<a<<","<<b<<endl; }
private:
int a,b;};
class Derived, public Base
{public:
Derived(int x,int y,int z), Base(x,y),c(z)
{ }
void Show() { cout<<"Derived,"<<c<<endl; }
private:
int c;};
void main()
{ Base b(50,50),*pb;
Derived d(10,20,30);
pb=&b;
pb->Show();
d.Show();
}
运行结果为:
Base,50,50
Derived:30
C++程序设计课件 设计制作:徐龙琴 6
3,#include <iostream.h>
class Person
{public:
Person() { cout<<"Constructor of Person"<<endl; }
~Person() { cout<<"Destructor of Person"<<endl; }
};
class Student, public Person
{ public:
Student() { cout<<"Constructor of Student"<<endl; }
~Student() { cout<<"Destructor of Student"<<endl; }
};
class Teacher, public Person
{public:
Teacher() { cout<<"Constructor of Teacher"<<endl; }
~Teacher() { cout<<"Destructor of Teacher"<<endl; }
};
void main()
{ Student s;
Teacher t;
}
运行结果为:
Constructor of Person
Constructor of Student
Constructor of Person
Constructor of Teacher
Destructor of Teacher
Destructor of Person
Destructor of Student
Destructor of Person
C++程序设计课件 设计制作:徐龙琴 7
三 编程题:
1.大学有这样几类人员:学生、教师、职员和在职读书的教师。
给出这几类人员的类描述。
2.编写一个程序,其中有一个简单的串类 String,包含设置字符
串、返回字符串长度及内容等功能。另有一个具有编辑功能的
串类 EditString,它的基类是 String,在其中设置一个光标,使
其能支持在光标处的插入、替换和删除等编辑功能。
1 c++中的类有两种用法,一种是类的实例化,即生成类的对象,
并参与系统的运行 ; 另一种是通过 ______,派生出新的类,
A,复用 B.继承 C.单继承 D.多继承
2 继承具有 _____,即当基本类本身也是某个类的派生类时,底层
的派生类也会自动 继承间接基类的成员,
A,规律性 B.传递性 C.重复性 D.多样性
3 在派生类中定义的析构函数与它所属的基类 ____,
A,一定有关 B.一定无关 C.以上都不对 D,可能有关
4 在多继承中,公有派生和私有派生对于基类成员在派生类中的
可访问性与单继承 的规则 ______,
A,完全相同 B.完全不同
C.部分相同部分不同 D.以上都不对
一、选择题,
c
b
d
a
C++程序设计课件 设计制作:徐龙琴 2
5 下列关于继承的描述中,是错误的。
A析构函数不能被继承
B派生类是基类的组合
C派生类成员除了它自己成员外,还包含了它的基类的成员
D派生类中继承的基类成员的访问权限到派生类保持不变
6下列虚基类的声明中正确的是
A)class virtual B, public A
B)virtual class B,public A
C)class B, public A virtual
D)class B, virtual public A
D
D
C++程序设计课件 设计制作:徐龙琴 3
7下列对派生类的描述中,错误的是
A)一个派生类可作为另一个派生类的基类
B)派生类至少有一个基类
C)派生类的缺省继承方式是 private
D)派生类只继承了基类的公有成员和保护成员
C
C++程序设计课件 设计制作:徐龙琴 4
二 读程题:
1,#include <iostream.h>
class Base
{ public:
Base() { cout<<"Base"<<endl; } };
class Derived11, virtual public Base
{public:
Derived11() { cout<<"Derived11"<<endl; } };
class Derived12, virtual public Base
{public:
Derived12() { cout<<"Derived12"<<endl; }};
class Derived2, public Base
{public:
Derived2() { cout<<"Derived2"<<endl; } };
class Derived3, public Derived11,public Derived12,
public Derived2
{public:
Derived3() { cout<<"Derived3"<<endl; } };
void main()
{ Derived3 obj;
}
运行结果为:
Base
Derived11
Derived12
Base
Derived2
Derived3
C++程序设计课件 设计制作:徐龙琴 5
2,#include <iostream.h>
class Base
{public:
Base(int x,int y) { a=x; b=y; }
void Show() { cout<<"Base,"<<a<<","<<b<<endl; }
private:
int a,b;};
class Derived, public Base
{public:
Derived(int x,int y,int z), Base(x,y),c(z)
{ }
void Show() { cout<<"Derived,"<<c<<endl; }
private:
int c;};
void main()
{ Base b(50,50),*pb;
Derived d(10,20,30);
pb=&b;
pb->Show();
d.Show();
}
运行结果为:
Base,50,50
Derived:30
C++程序设计课件 设计制作:徐龙琴 6
3,#include <iostream.h>
class Person
{public:
Person() { cout<<"Constructor of Person"<<endl; }
~Person() { cout<<"Destructor of Person"<<endl; }
};
class Student, public Person
{ public:
Student() { cout<<"Constructor of Student"<<endl; }
~Student() { cout<<"Destructor of Student"<<endl; }
};
class Teacher, public Person
{public:
Teacher() { cout<<"Constructor of Teacher"<<endl; }
~Teacher() { cout<<"Destructor of Teacher"<<endl; }
};
void main()
{ Student s;
Teacher t;
}
运行结果为:
Constructor of Person
Constructor of Student
Constructor of Person
Constructor of Teacher
Destructor of Teacher
Destructor of Person
Destructor of Student
Destructor of Person
C++程序设计课件 设计制作:徐龙琴 7
三 编程题:
1.大学有这样几类人员:学生、教师、职员和在职读书的教师。
给出这几类人员的类描述。
2.编写一个程序,其中有一个简单的串类 String,包含设置字符
串、返回字符串长度及内容等功能。另有一个具有编辑功能的
串类 EditString,它的基类是 String,在其中设置一个光标,使
其能支持在光标处的插入、替换和删除等编辑功能。