高级C语言复习题

 

一基本知识点

1.后置自增运算符"++"重载为类的成员函数(假如类名为Timer)的函数头应该

表示为Timeroperator++(int);。【前置自增函数头为Timeroperator++()】

2.若想把函数voidfun()申明为一个类的友元函数,则应在类的申明中加入

语句friendvoidfun();。

3.C++程序设计语言既是面向过程又是面向对象的程序设计语言。

4.C++中定义的标准输出和输入流对象分别为cout和cin。他们是使用面象对

象方式定义的对象。

5.类和对象的关系可以描述为:类是对象的抽象,对象是类的实例。

6.C++中结构体如果没有定义访问属性,则默认的访问属性是public的。

7.变量引用定义的方式为int&a=b;

8.基类中申明了虚函数(标志Virtual)后,派生类中与其对应的函数可以不申

明为虚函数

9.C++中函数可以带有默认参数,带有默让参数的函数调用时实参个数可以少

于形参个数,具体传递形参的个数由被调函数和主调函数共同决定

10.C++中两种代码复用的方式有组合和继承。

11.类的定义中,通常将对数据成员的初始化放置在构造函数中。

12.类的静态成员函数中没有this指针,由此决定了静态成员函数不能访问本类

中的非静态成员。

13.关键字const说明对象或变量初始化后不会被修改

14.C++中通过虚函数来实现多态性。

15.抽象类只能作为基类使用,不能定义它的对象。

16.在类中必须声明成员函数的原型,成员函数的实现部分可以写在类外。

17.C++中允许使用同一名称定义若干个不同参数类型和个数的函数称之为函数

重载。

18.枚举类形的定义举例:enumcolor{red=1,yellow,white,black};其中

red,yellow,white,black的值依次为1,2,3,4。

19.类定义中如果不指定成员的访问属性,则使用默认的private访问属性。

20.面向对象程序设计的特点有:抽象、封装、继承和多态。

21.如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形

参应该是引用类型或指针类型。

22.public继承方式下,基类中的public,protected访问属性成员不变,而基

类的private访问属性的成员无论在什么继承方式下到派生类中都是不可访问的。

23.内联函数编译时被展开到主调函数中,可以加快函数执行速度

24.通过一个常对象只能调用它的常成员函数,不能调用其他成员函数。

25.函数的递归调用是指函数直接或间接地调用自身。

26.两个模板参数模板函数的申明形式如下:template<typenameT1,typename

T2>,typename关键字也可用class表示。

27.C++提供的new运算符能够在内存堆区分配内存空间,new一个对象时会自

动调用构造函数,new分配的内存空间必须手动使用delete释放,否则会造成内存泄露。

28.拷贝构造函数的形参必须是本类对象的引用

29.类的构造函数一般负责对数据进行初始化,可以被重载为若干个不同参数形

式,析构函数一般用来负责数据清理,具有固定形式,不能被重载。二程序设计题

1.设计一个Point类,要求正确表示二维平面上的点坐标

#include<iostream>

usingnamespacestd;

classPoint

{public:

intx;

inty;

public:

Point();

};

Point::Point()

{

cout<<“构造函数被调用"<<endl;

x=25;

}

void

{main()y=25;Pointp1;

cout<<p1.x<<""<<p1.y<<endl;}

2.设计一个类表示秒表,要求表示分和秒关系,要求使用重载前置和后置++表示秒表的计时,

//Time.h

#include<iostream>

usingnamespacestd;

classTime

{

public:

Time(){minute=0;sec=0;}

Time(intm,ints):minute(m),sec(s){}Timeoperator++();

voiddisplay(){cout<<minute<<":"<<sec<<endl;}private:

intminute;

intsec;

};

//Time.cpp

#include“Time.h"

TimeTime::operator++()

{

if(++sec>=60)

{sec-=60;

++minute;}

return*this;

}

//后置

TimeTime::operator++(int)

{

Timetemp(*this);

sec++;

if(sec>=60)

{sec-=60;

++minute;}

returntemp;

}

3定义类Complex封装数学上的复数类型,必须使用运算符重载表示复始的加减乘除

#include<iostream>

usingnamespacestd;

classComplex

{

public:

Complex(){real=0;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

Complexoperator+(Complex&c2);

voiddisplay();

private:

doublereal;

doubleimag;

}

ComplexComplex::operator+(Complex&c2){

Complexc;

c.real=real+c2.real;

c.imag=imag+c2.imag;

returnc;

}

voidComplex::display()

{

cout<<"("<<real<<","<<imag<<"i)"<<endl;}

intmain()

{

Complexc1(3,4),c2(5,-10),c3;

c3=c1+c2;

cout<<"c1=";

c1.display();

cout<<"c2=";

c2.display();

cout<<"c1+c2=";

c3.display();

return0;

}

4.定义类Vector来表示空间中的向量(x,y,z)实现向量的常见计算,(点乘,叉乘,模,方向角)

5.定义从Point类派生出Circle类,再出Circle类派生出column类。#ifndefCIRCLE_H

#defineCIRCLE_H

#include<iostream>

#include"Point.h"

usingnamespacestd;

classCircle:publicPoint

{

protected:

floatr;

public:

Circle(floatx,floaty,floatr);

voidShow();

floatGetArea();

floatGetLength();

}

Circle::Circle(floatx,floaty,floatr):Point(x,y){

this->r=r;

}

voidCircle::Show()

{

cout<<"圆心为:";

Point(x,y).Show();

cout<<"半径为:"<<r<<endl;

}

floatCircle::GetArea()

{

return3.14159*r*r;

}

floatCircle::GetLength()

{

return3.14159*2*r;

}

//column.h

#ifndefCOLUMN_H

#defineCOLUNM_H

#include"Circle.h"

classColumn:publicCircle

{

private:

floath;

public:

Column(floatx,floaty,floatr,floath):Circle(x,y,r){

this->h=h;

}

voidShow();

floatGetArea();

floatGetVolume();

}

voidColumn::Show()

{

Circle::Show();

cout<<"高为:"<<h<<endl;

}

floatColumn::GetArea()

{

return2*Circle::GetArea()+GetLength()*h;}

floatColumn::GetVolume()

{

returnCircle::GetArea()*h;

}

www.99jianzhu.com/包含内容:建筑图纸、PDF/word/ppt 流程,表格,案例,最新,免费下载,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。


TOP最近更新内容

    长城小学关爱留守儿童工作制度
    园林史名词解释
  • 上一篇:高中英语语法重难点练习
  • 下一篇:郝斌老师C语言专题笔记