我自认为注释还算详细,哈哈。
<pre name="code" class="cpp">//名字空间使用示例.cpp
#include <iostream>
using namespace std; //空间std涵盖了所有标准C++的定义和声明
namespace one //定义了一个名字空间one,里面有1个常量M和一个变量inf
{
const int M = 200;
int inf = 10;
} //后面不加分号
namespace two //定义一个名字空间two,里面有两个变量
{
int x;
int inf = -100;
}
using namespace one;
int main()
{
using two::x; //using声明仅使用名字空间two中的内容x
x=-100; //直接访问,相当于two::x = -100;
cout<<"oneInf "<<inf<<endl; //using声明使用了整个one,其所有成员直接访问, one的inf
cout<<"oneM "<<M<<endl;
two::inf *= 2; //使用名字空间名::局部内容名操作未使用using声明的内容
cout<<"twoInf "<<two::inf<<endl; //
cout<<"twoX "<<x<<endl; //因为已经用using声明了two中内容x, 可以直接访问
return 0;
}
//域解析符使全局变量真正具有全局作用域.cpp
#include <iostream>
#include <iomanip> //?
using namespace std;
int sum = 5000; //定义全局变量sum
int main()
{
int arr[3] = {10, 20, 30}; //一个小程序块开始
{
int i, sum = 0;
for(int i = 0; i < 3; i++)
{
sum += arr[i];
}
cout<<"local sum: "<<sum<<endl; //输出局部sum
::sum += sum; //通过域解析符在同名局部变量的作用域内对全局sum访问
cout<<"global sum: "<<::sum<<endl;
}
sum *= 2; //这是全局sum
cout<<"global sum: "<<::sum<<endl;
int sum = 200; //定义另一个sum
cout<<"local sum: "<<sum<<endl;
::sum += sum; //10120 + 200
cout<<"global sum: "<<::sum<<endl;
return 0;
} //形式参数带默认参数值的函数定义以及调用示例.cpp
#include <iostream>
using namespace std;
void Fun(int i, int j = 5, int k = 10); //原型声明中形参j和k分别指定了默认参数5和10
int main()
{
Fun(20);
Fun(14, 30);
Fun(50, 60, 70);
return 0;
}
void Fun(int i, int j, int k) //原型中定义过,在定义的首部不能再指定
{
cout<<i<<" "<<j<<" "<<k<<endl;
}
//用宏定义实现两数相乘(错).cpp
#include <iostream>
using namespace std;
#define Multiply(x,y) x*y //注意:此处x和y两侧没有加括号,出现隐患
int main()
{
int a = Multiply(3 + 4, 2 + 3); //展开后为:int a = 3 + 4*2 + 3
cout<<"a = "<<a<<endl; //输出14, 原计划是7*5 = 35
return 0;
}
//用内联函数实现两数相乘.cpp
#include <iostream>
using namespace std;
inline int Multiply(int x, int y) //在面向对象程序设计中,
{ //定义在类内的成员函数都将自动理解为内联函数,
return x * y; //前面无需再加inline关键字
}
int main()
{
int a = Multiply(3 + 4, 2 + 3);
cout << "a = " << a << endl; //用了内联函数之后,确实避免了宏定义那种错误,
return 0; //输出值是35
}//重载函数示例.cpp
//在C++语言中,对于功能完全相同或类似,只是在形式参数的个数、
//类型、顺序方面有区别的不同函数以相同的函数名来命名,
//该同名函数统称为重载(Overload)
#include <iostream>
using namespace std;
int square(int x) //重载函数的第1版本,int型参数
{
return x * x;
}
float square(float x) //2版本
{
return x * x;
}
double square(double x = 1.5) //3版本
{
return x * x;
}
int main()
{
cout << "square() = " << square() << endl; //调用的是第三个版本,因为它有默认值
cout << "square(10) = " << square(10) << endl; //调用第一版本
cout << "square(2.5f) = " << square(2.5f) << endl;//2edition
cout << "square(1.1) = " << square(1.1) << endl;
return 0;
}原文地址:http://blog.csdn.net/qq_19427739/article/details/46048297