2-20运行下面的程序,观察其输出,体会 i++++i的差别。
#include <iostream.h>
int main()
{
int myAge = 39;    // initialize two integers
int yourAge = 39;
cout << "I am: " << myAge << " years old.\n";
cout << "You are: " << yourAge << " years old\n";
myAge++;      // postfix increment
++yourAge;      // prefix increment
cout << "One \n";
cout << "I am: " << myAge << " years old.\n";
cout << "You are: " << yourAge << " years old\n";
cout << "Another year passes\n";
cout << "I am: " << myAge++ << " years old.\n";
cout << "Let's print it again.\n";
cout << "I am: " << myAge << " years old.\n";
cout << "You are: " << yourAge << " years old\n";
return 0;
}
解:
程序运行输出:
I am 39 years old
You are 39 years old
One year passes
I am 40 years old
You are 40 years old
Another year passes
I am 40 years old
You are 41 years old
Let's print it again
I am 41 years old
You are 41 years old
3-4 什么叫内联函数 ?它有哪些特点?
解:
定义时使用关键字 inline的函数叫做内联函数;编译器在编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销;内联函数体内不能有循环语句和 switch语句;内联函数的定义必须出现在内联函数第一次被调用之前;对内联函数不能进行异常接口声明;
3-5 函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗?
解:
不必一致,所有的参数是根据位置和类型而不是名字来区分的。
3-6 调用被重载函数时,通过什么来区分被调用的是哪个函数?
解:
重载的函数的函数名是相同的,但它们的参数的个数和数据类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。
3-11什么叫作嵌套调用?什么叫作递归调用?
解:
函数允许嵌套调用。如果函数1调用了函数 2,函数 2再调用函数 3,便形成了函数的嵌套调用。函数可以直接或间接地调用自身,称为递归调用。
4-3 构造函数和析构函数有什么作用?
解:
构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,使此对象具有区别于彼对象的特征,完成的就是是一个从一般到具体的过程,构造函数在对象创建的时候由系统自动调用。析构函数与构造函数的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作,也就是专门作扫尾工作的。一般情况下,析构函数是在对象的生存期即将结束的时刻由系统自动调用的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放。
4-4 数据成员可以为公有的吗?成员函数可以为私有的吗?
解:
可以,二者都是合法的。数据成员和成员函数都可以为公有或私有的。但数据成员最好定义为私有的。
4-6 什么叫做拷贝构造函数?拷贝构造函数何时被调用?
解:
拷贝构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象的引用,其作用是使用一个已经存在的对象,去初始化一个新的同类的对象。在以下三种情况下会被调用:在当用类的一个对象去初始化该类的另一个对象时;如果函数的形参是类对象,调用函数进行形参和实参结合时;如果函数的返回值是类对象,函数调用完成返回时;
4-7 拷贝构造函数与赋值运算符 (=)有何不同?
解:
赋值运算符 (=)作用于一个已存在的对象;而拷贝构造函数会创造一个新的对象。
4-11定义一个矩形类,有长、宽两个属性,有成员函数计算矩形的面积
解:
#include <iostream.h>
class Rectangle
{
public:
Rectangle(float len, float width)
{
Length = len;
Width = width;
}
~Rectangle(){};
float GetArea() { return Length * Width; }
float GetLength() { return Length; }
float GetWidth() { return Width; }
private:
float Length;
float Width;
};
void main()
{
float length, width;
cout << "请输入矩形的长度:";
cin >> length;
cout << "请输入矩形的宽度:";
cin >> width;
Rectangle r(length, width);
cout << "长为" << length << "宽为" << width << "的矩形的面积为:" << r.GetArea () << endl;
}
程序运行输出:
请输入矩形的长度:5
请输入矩形的宽度:4
长为 5、宽为 4的矩形的面积为: 20
5-1 什么叫做作用域?有哪几种类型的作用域?
解:
作用域讨论的是标识符的有效范围,作用域是一个标识符在程序正文中有效的区域。 C++的作用域分为函数原形作用域、块作用域(局部作用域)、类作用域和文件作用域.
5-2 什么叫做可见性?可见性的一般规则是什么?
解:
可见性是标识符是否可以引用的问题;可见性的一般规则是:标识符要声明在前,引用在后,在同一作用域中,不能声明同名的标识符。对于在不同的作用域声明的标识符,遵循的原则是:若有两个或多个具有包含关系的作用域,外层声明的标识符如果在内层没有声明同名标识符时仍可见,如果内层声明了同名标识符则外层标识符不可见。
5-3 下面的程序的运行结果是什么,实际运行一下,看看与你的设想有何不同。
#include <iostream.h>
void myFunction();
int x = 5;
int y = 7;
int main()
{
cout << "x from main: " << x << "\n";
cout << "y from main: " << y << "\n\n";
myFunction();
cout << "Back from myFunction!\n\n";
cout << "x from main: " << x << "\n";
cout << "y from main: " << y << "\n";
return 0;
}
void myFunction()
{
int y = 10;
cout << "x from myFunction: " << x << "\n";
enum函数cout << "y from myFunction: " << y << "\n\n";
}
解:
程序运行输出:
x from main: 5
y from main: 7
x from myFunction: 5
y from myFunction: 10
Back from myFunction!
x from main: 5
y from main: 7
5-4 假设有两个无关系的类 Engine Fuel,使用时,怎样允许 Fuel成员访问 Engine中的私有和保护的成员?
解:
源程序:
class fuel;
class engine
{
friend class fuel;
private:
int powerLevel;
public:
engine(){powerLevel = 0;}
void engine_fn(fuel &f);
};
class fuel
{
friend class engine;
private:
int fuelLevel;
public:
fuel(){ fuelLevel = 0;}
void fuel_fn( engine &e);
};
6-2 在数组 A[20]中第一个元素和最后一个元素是哪一个?
解:
第一个元素是 A[0],最后一个元素是 A[19]
6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别?
解:
指针是一种数据类型,具有指针类型的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。
6-10定义一个有五个元素的int型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。
解:
#include <iostream.h>
int main()
{
int myArray[5];
int i;
for ( i=0; i<5; i++)
{
cout << "Value for myArray[" << i << "]: ";
cin >> myArray[i];
}
for (i = 0; i<5; i++)
cout << i << ": " << myArray[i] << "\n";
return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。