SuperSonicxx的专栏

我自认为注释还算详细,哈哈。

<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;intsum = 5000;//定义全局变量sumint 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;//这是全局sumcout<<"global sum:"<<::sum<<endl;int sum = 200;//定义另一个sumcout<<"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和10int 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 + 3cout<<"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;//2editioncout << "square(1.1) = " << square(1.1) << endl;return 0;}

有多远,走多远,把足迹连成生命线。

SuperSonicxx的专栏

相关文章:

你感兴趣的文章:

标签云: