1.什么是命名空间,如何访问命名空间的成员?【解答】为了解决不同文件中同名变量的问题,C++标准中引入命名空间的概念。
命名空间(namespace)是一种特殊的作用域,命名空间可以由程序员自己来创建,可以将不同的标识符集合在一个命名作用域内,这些标识符可以类、对象、函数、变量、结构体、模板以及其他命名空间等。
在作用域范围内使用命名空间就可以访问命名空间定义的标识符。
有3种访问方法:(1)直接指定标识符,访问方式为:命名空间标识符名∷成员名。
(2)使用using namespace命令(3)使用using关键词声明2.什么是内联函数,它有什么特点?哪些函数不能定义为内联函数?【解答】用inline关键字声明或定义的函数称为内联函数。
C++中对于功能简单、规模小、使用频繁的函数,可以将其设置为内联函数。
内联函数(inline function)的定义和普通函数相同,但C++对它们的处理方式不一样。
在编译时,C++将用内联函数程序代码替换对它每次的调用。
这样,内联函数没有函数调用的开销,即节省参数传递、控制转移的开销,从而提高了程序运行时的效率。
但是,由于每次调用内联函数时,需要将这个内联函数的所有代码复制到调用函数中,所以会增加程序的代码量,占用更多的存储空间,增大了系统空间方面的开销。
因此,内联函数是一种空间换时间的方案。
函数体内有循环语句和switch语句,递归调用的函数不能定义为内联函数。
3.什么是函数重载?在函数调用时,C++是如何匹配重载函数的?【解答】函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或参数个数不同。
编译时编译器将根据实参和形参的类型及个数进行相应地匹配,自动确定调用哪一个函数。
使得重载的函数虽然函数名相同,但功能却不完全相同。
在函数调用时,C++是匹配重载函数规则如下:首先寻找一个精确匹配,如果能找到,调用该函数;其次进行提升匹配,通过内部类型转换(窄类型到宽类型的转换)寻求一个匹配,如char到int、short到int等,如果能找到,调用该函数;最后通过强制类型转换寻求一个匹配,如果能找到,调用该函数。
4.设置函数参数的默认值有何作用?【解答】C++中允许函数提供默认参数,也就是允许在函数的声明或定义时给一个或多个参数指定默认值。
在调用具有默认参数的函数时,如果没有提供实际参数,C++将自动把默认参数作为相应参数的值5.什么叫引用,使用引用时需要注意哪些问题?【解答】引用是一个变量的别名。
使用引用时,必须在定义时进行初始化,不能在定义完后再赋值。
6.new运算符的作用是什么?delete运算符的作用是什么?【解答】在C++程序中,new是动态分配内存的运算符,自动计算需要分配的空间。
delete是撤销动态申请的内存运算符。
delete与new通常配对使用,建立堆对象时使用new运算符、删除堆对象时delete使用运算符。
7、#include"stdafx.h"#include"iostream"using namespace std;int Min(int x1,int x2);int Min(int x1,int x2,int x3);int Min(int x1,int x2,int x3,int x4); int _tmain(int argc, _TCHAR* argv[]) {int x1,x2,x3,x4;cout<<"input x1,x2,x3,x4"<<endl; cin>>x1>>x2>>x3>>x4;cout<<Min(x1,x2)<<endl;cout<<Min(x2,x3,x4)<<endl;cout<<Min(x1,x2,x3,x4)<<endl;getchar();return 0;}int Min(int x1,int x2){return (x1<x2?x1:x2);}int Min(int x1,int x2,int x3){int y;y=x1<x2?x1:x2;return (y<x3?y:x3);}int Min(int x1,int x2,int x3,int x4) {int y1,y2;y1=x1<x2?x1:x2;y2=x3<x4?x3:x4;return (y1<y2?y1:y2);}8、#include“stdafx.h”#include"iostream"#include<cmath>using namespace std;#define pi 3.141592double Area(double R);double Area(double a,double b);double Perim(double R);double Perim(double a,double b);int _tmain(int argc, _TCHAR* argv[]) { double r;double m;double n;cout<<"请输入圆的半径"<<endl;cin>>r;cout<<"圆的面积为:"<<Area(r)<<" "<<"圆的周长为:"<<Perim(r) <<endl;cout<<"请输入长方形的边长"<<endl;cin>>m>>n;cout<<"长方形的面积为:"<<Area(m,n)<<" "<<"长方形的周长为:"<<Perim(m,n)<<endl;cout<<"请输入正方形的边长"<<endl;cin>>m;cout<<"正方形的面积为:"<<Area(m,m)<<" "<<"正方形的周长为:"<<Perim(m,m)<<endl;return 0;}double Area(double R){ double s;s=pi*R*R;return s;}double Area(double a,double b){ double s;s=a*b;return s;}double Perim(double R){ double p;p=2*pi*R;return p;}double Perim(double a,double b){ double p;p=2*(a+b);return p;}9、#include<fstream>#include<iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ofstream outData("D:\\data.txt");ifstream inData;int x,i,b[10];for(i=0;i<10;i++){ cin>>x;outData<<x<<" "; }outData.close();inData.open("D:\\data.txt");//while(!inData.eof())for(int j=0;j<10;j++){inData>>b[j];} inData.close();int s=0;for(int m=0;m<10;m++){ s+=b[m];cout<<b[m]<<" "; }cout<<endl;cout<<"数据总和为:"<<s<<endl;getchar();return 0;}10、(1)#include<fstream>#include<iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ofstream outData("C:\\student.dat"); //char name[8],id[10],pro[8];int math,english;for(int i=0;i<3;i++){ cout<<"输入学生姓名:";cin>>name;cout<<"输入学生学号:";cin>>id;cout<<"输入学生专业:";cin>>pro;cout<<"输入高数成绩:";cin>>math;cout<<"输入英语成绩:";cin>>english;outData<<name<<" "<<id<<" "<<pro<<" "<<math<<" "<<english<<endl;}outData.close();return 0;}(2)#include<fstream>#include<iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ifstream inData("C:\\student.dat");char name1[8],id1[10],pro1[8];int math1,english1;for(int i=0;i<8;i++){inData>>name1>>id1>>pro1>>math1>>english1;cout<<"姓名:"<<name1<<endl;cout<<"学号:"<<id1<<endl;cout<<"专业:"<<pro1<<endl;cout<<"高数成绩:"<<math1<<endl;cout<<"英语成绩:"<<english1<<endl;}inData.close();getchar();return 0;}。