一。命名空间
1.格式:
namespace 命名空间名称
{
//命名空间声明的内容
}
2.命名空间的名称.
遵循变量的命名规则,避免不同程序员都使用简短的名称,推出了命名空间的别名
语法格式:namespace 别名=命名空间名。
eg:可以将geography information system取一个好记的别名: namespace GIS=geography information system
3.命名空间和类的关系。
使用命名空间时,根据需要把相关类放到同一个命名空间中,实现类的分类管理。
#include<iostream>
using namespace std;
namespace A
{
class test
{
public:
void show() { cout<<"调用命名空间A中的函数"<<endl; }
};
}
namespace B
{
class test
{
public:
void show(){cout<<"调用命名空间B的函数"<<endl;}
};
}
int main()
{
A::test c1;
c1.show();
B::test c2;
c2:show();
return 0;
}
4.iostream和iostream.h的区别
#include <iostream>标准输入输出流,不可直接输出引用,可std::cout<<,此时一般在程序开始用using namespace std
#Include <iostream.h>非标准输入输出流,可直接输出引用cout<<.
有“h”就是非标准的,无“h”是c标准函数,需要用到命名空间。还有一部分不完全是有h和无h的差别 如:math和math.h。
5.关于命名空间更详细的内容:http://qiusuoge.com/9811.html
二 。函数
1.形参默认值
结合参数给予默认值:bool passde(int nScore=60){}
注意:默认参数必须在末尾:bool max(int a ,int b=0){}
2.传值大的数据时,用指针传入函数
eg:int Salary(int* pSalary)
{
pSalary[n]=temp;
++n;
}
3.内联函数
调用函数时,需要保存现场,对参数进行赋值,恢复现场,等等。如果函数多次被调用,本身比较短小,可很快执行完毕,会导致系统花在函数调用上的时间远远大于函数执行的时间,内联函数解决这个问题,将函数代码内联到函数调用的地方,将代码整段插入当前函数的调用的位置,提高程序性能。
声明时,在函数前加inline,调用正常调用。
4.重载函数。
同一函数名表示多个意义
int max (int a ,int b );
double max(double a,double b);
5.构造函数和析构函数
它们分别来处理对象的创建和销毁
用参数对属性进行初始化。
Teacher(string strName)
{
name=strName;
}
初始化列表
Teacher(string strName)
:name(strName){}
6.拷贝构造函数
一种特殊的构造函数,形参是本类的对象的引用,作用是使用一个已经存在的对象(由拷贝构造函数的参数指定),去初始化同类对象的一个新对象。
普通构造函数在对象创建时被调用,复制构造函数在一下三种情况被调用。(复制构造函数又称拷贝构造函数)
1),当用类的一个对象去初始化该类的另一个对象。
Point a(1.2);
Point b(a);//对象a初始化对象b,复制构造函数被调用
Pont c=a;//对象a初始化对象c,复制构造函数被调用
2),函数的形参是类的对象,调用函数时,形参和实参相结合。
void f(Point p){}
int main{
Point a(1.2);
f(a);
return 0;
}
只用把对象用值传递时,才会调用拷贝构造函数,如果传递引用,则不会,所以,传递比较大的对象时,传递引用会比传值引用的效率高很多。
3),函数的返回值是类的对象,函数执行完成返回调用者时。
Point g(){
Point a(1.2);
return a;
}
int main(){
Point b;
b=g();
return 0;
}