您的当前位置:首页正文

C++期末复习-改错

来源:画鸵萌宠网
C++基本概念

1.枚举类型不是C++语言的基本数据类型

2.定义函数模板中使用的参数类型标识符需使用< >括起来。 3.单目运算符作为类成员函数重载时,形参个数为0个。

4.拷贝构造函数point::point(point& p)可以访问P的私有和公有成员 5.C++将数据从一个对象流向另一个对象的流动抽象为“流”,从流中获取数据的操作称为提取。

6.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是自定义的头文件。

7.包含循环语句的函数不能声明为内联函数

8.使用delete[ ]删除对象数组时,数组中各元素都调用析构函数 9.C++中使用inline关键字说明函数为内联函数。 10.在用C++进行程序设计时,最好用new代替malloc。 11. #elif指令属于条件编译指令

12.预处理语句有三种,分别是宏定义、文件包含和条件编译。 13.预处理命令以#号开头。

14.重载的运算符保持其原有的操作数、优先级、结合性不变。

15.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为内联函数 16.C++允许在结构中定义函数,这些函数称为成员函数 17.向量操作方法中front方法返回向量中的第一个对象。 18.在编译指令中,宏定义使用#define指令。 19.结构性是面向对象的关键要素( 错 )

面向对象三要素 封装(Encapsulation) 继承(Inheritance) 多态(Polymorphism)

面向对象五原则

单一职责原则(SRP) 开放-封闭原则(OCP) Liskov 替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP)

面向对象六视点 复用(Reusibility) 扩展(Extensibility) 分离(Separability)

变化(Change) 简约(Simplicity) 一致(Coherance)

20.C++派生类使用两种基本面向对象技术:第一种为性质约束,即对基类的性质加以限制;第二种为性质扩展,即增加派生类的性质。

21.控制格式输入输出的操作中,函数setw(int)是设置域宽的,要求给出函数名和参数类型。

22.若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的声明语句。

23.在C++中有两种参数传递方式即值传递和引用传递。 24.在继承中,派生类拥有的基类个数至少1个

25.在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则正确的声明语句是ifstream fin(“Test.txt”);。 26.静态联编所支持的多态性称为编译时的多态性。

27.编写C++程序一般需经过的几个步骤依次是编辑、编译、连接、运行 28.面向对象的四个基本特性是多态性、继承性、封装性、抽象。 29.若一个派生类仅有唯一基类,则此继承关系称为单一继承。 30.内联函数的特点是:能减少代码量,加快访问速度

31.派生类的对象可以访问公有继承的公有成员所继承的基类成员 32.类的私有成员可在本类的成员函数中被访问

33.一个类拥有多个构造函数,则这些构造函数间为重载关系 34.构造函数、析构函数和友元函数中,友元函数不是类成员。 35.抽象类中至少要有一个纯虚函数。 36.类的构造函数在定义对象时会被自动调用 37.析构函数不能指定返回类型 38.C++中ostream的直接基类为ios。 39.编译时的多态性通过重载函数实现。

40.类的静态成员函数在创建对象前是不存在的(错)

41.在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的私有成员

42.如果类A被声明成类B的友元,则类B不一定是类A的友元

43.派生类的成员一般分为两部分,一部分是从基类继承的成员,另一部分是自己定义的新成员。

44.定义虚函数所用的关键字是virtual。

45.vector的back方法返回向量中的最后一个对象。

46.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是类

47.决定C++语言中函数的返回值类型的是在定义该函数时所指定的数据类型 48.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的地址值。 49.C++语言中可以实现输出一个换行符并刷新流功能的操控符是endl 50.对于类Point而言,其析构函数的定义原型为~Point();。

二、找出并修改程序中的一处错误 1. #include class Test { private:

int x,y=20; //int x,y; public:

Test(int i,int j){x=i,y=j;} int getx(){return x;} int gety(){return y;} };

void main()

{ Test mt(10,20);

cout<2. #include void main() { int i(3),j(8);

int * const p=&i;

cout<<*p<}

3. #include class f

{ private:float x,y;

public:f(float a,float b){x=a;y=b;} float max( ){return(xmain( ) //void main()

{ f a (1.5,3.8);

cout<4. 生成具有n个元素的动态数组。 #include void main() { int n; cin>>n;

int a[n]; //int *a=new int[n]; a[0]=2;

cout<5. #include

main( ) { int x=6;

const int*p=x; //const int*p=&x; cout<<*p<6. #include class T { protected:

int p; //删掉此句 public:

//int p; 添加此句 T(int m){p=m;} };

void main() { T a(10);

cout<7. #include

class test{

private:int x;

public:test(int a){x=a;} void set(int a){x=a;}

void get( ){cout<main(){

const test a(3);// test a(3);

a.set(5);

a.get(); }

8. #include class f

{ private:int x,y; //double x,y public:fl(int a,int b){x=a;y=b;}//public:void f1(double a,double b){x=a;y=b;} void print( ){cout<main( ) //void main() { f a;

a.f1(1.5, 1.8); a.print( ); }

9. #include class test

{ private:int x;

public:test(int a){x=a;} void set(int a){x=a;}

void get( ){cout<} //}; main( )

{ const test a(3); //test a(3);

a.set(5); a.get(); }

10. #include class f{

private:int x,y; //double x,y

public:fl(int a,int b){x=a;y=b;}//public: f(double a,double b){x=a;y=b;} void print( ){cout<main( ){ //void main() f a; // f a(1.5,1.8);

a.f1(1.5, 1.8); //删掉此句 ?? 可以再次调用构造函数吗?能分开?

a.print( ); }

Top