函数的形参的标识符只在这个函数中有效,另外,函数中的声明的变量的标识符也只在该函数中生效。当在函数以外的地方使用这些标识符时(如果在这些地方没有声明过这些变量),编译器就会报错。

要在这些地方使用相同的标识符时,就需要再次对这些标识符进行声明。

对主函数中标识符进行重新声明后,运行成功:

#define _CRT_SECURE_NOWARNINGS
#include<iostream>
using namespace std;
int main()
{
int flag=1;
int i = 2;
int j = 3;
if (1)
{
int flag = 78;
cout << "块内flag=" << flag << endl;
if (1)
{
int i = 28;
cout << "块内i="<<i << endl;
if (1)
{
int j = 45;
cout << "块内j=" << j << endl;
}
cout << "块外j=" << j << endl;
}
cout << "块外i=" << i << endl;
}
cout << "块外flag=" <<flag<<endl;
system("pause");
return 0;
}
运行截图:

实验表明,在块内声明的标识符的作用域是从该标识符的声明处开始,到块结束为止,如果有相同的标识符的作用域将该块包含在内,在块内使用的依旧是在块内的声明的标识符。
#define _CRT_SECURE_NOWARNINGS
#include<iostream>
using namespace std;
#define Pi 3.14
class Circle {
public:
Circle(float R)
{
radius = R;
}
double getArea()
{
return Pi * radius * radius;
}
private:
float radius;
};
int main()
{
float R;
cout << "请输入圆的半径" << endl;
cin >> R;
Circle MyCircle(R);
cout << "该圆的面积为" << MyCircle.getArea() << endl;
system("pause");
return 0;
}
运行截图:

我们经常使用的cout、cin语句就是来自于命名空间std,我们在使用这些语句之前需要使用以下语句:
using namespace std;
myspace.h
//myspace.h
#define Pi 3.14
namespace myspace
{
class Circle {
public:
Circle(float R);
double getArea();
private:
float radius;
};
}
类的函数.cpp
//类的函数.cpp
#include"myspace.h"
using namespace myspace;
Circle::Circle(float R)
{
radius = R;
}
double Circle::getArea()
{
return radius * radius*Pi;
}
源.cpp
// 源.cpp
#define _CRT_SECURE_NOWARNINGS
#include<iostream>
#include"myspace.h"
using namespace std;
using namespace myspace;
int main()
{
Circle circle(1);
cout << "圆的面积为:" << circle.getArea()<<endl;;
system("pause");
return 0;
}
运行截图:

原文:https://www.cnblogs.com/TracerLyh/p/11597675.html