#define bool //bool是用1和0区分真假。
#define ture //1(真)
#define false //0(假)
//在c++中bool还可以拿来重载
//比如重载运算符!=,==,<,>,<=,>=
bool operator == (CMyVector<T> const &srcVector)const;
bool operator != (CMyVector<T> const &srcVector)const;
bool operator > (CMyVector<T> const &srcVector)const;
bool operator >= (CMyVector<T> const &srcVector)const;
bool operator < (CMyVector<T> const &srcVector)const;
bool operator <= (CMyVector<T> const &srcVector)const;
关于bool重载详细用法可以参考文章:vector 笔记c++
引用是引入了对象的一个同义词。定义引用的方法和指针相似,只是用&代替了*号。引用(reference)是c++对c语言的重要扩充。对引用的操作与对变量直接操作完全一样。
格式为:类型 &变量名 =(定义过的变量名);
引用的特点:
void TestReference1()
{
int a = 8;
int &b = a;
cout << "a=" << &a <<" "<<"b=" << &b << endl;//这是直接用b引用a的地址
}
引用的优点:
1、函数参数,引用传递比值传递效率高,比指针节约空间。
2、相对而言,引用比指针更安全
3、sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。
4、关于引用的自增和指针的自增参考:引用和指针自增的不同
5、关于引用的解引用参考:c语言 解引用
重载要满足的三要素:
1、同一个作用域;
2、函数名相同;
3、参数要不同;要么个数不一样,要么参数不一样;
至于返回值不同,并不影响重载
例子:
void TestReference1()
{
int a = 8;
int &b = a;
cout << "a=" << &a << " " << "b=" << &b << endl;//这是直接用b引用a的地址
}
void TestReference1(int a)
{
int &b = a;
cout << "a=" << &a << " " << "b=" << &b << endl;//这是直接用b引用a的地址
}
缺省参数有两个种类:
1.全缺省参数:当作实参传入形参一样就好了
#include
using namespace std;
void TestTDP(int a=0 , int b=5 , int c=7)//全缺省参数
{
cout << a <<" "<< b<<" "<<c<<endl;
}
int main()
{
TestTDP(1, 2);//从左边往右边依次传递参数
system("pause");
}
2.半缺省参数:由于有个参数没有给形参初始化,所以需要从左边往右边逐个迭代参数。
#include
using namespace std;
void TestTDP2(int a ,int b=0)//半缺省参数
{
cout << a << " " << b << endl;
}
int main()
{
TestTDP2(1);//从右边往左边依次传递参数
system("pause");
}
看完代码可以得知:
1.当调用中没有参数的时候,使用的就是定义函数的默认值
2.当调用中含有参数,使用的是指定的实参
哑元的优点
1、重载方便;
2、版本更新时去掉不用的值时只要删除形参,这一个数据就会失效。
#include
using namespace std;
void TestYaYuan(int ,int b)//哑元
{
cout << " " << b << endl;
}
int main()
{
TestYaYuan(1,2);//此处传入的参数1会失效;
system("pause");
}
暂无描述:
详细先参考:内联函数
暂无描述:
详细先参考:动态内存分配 (详解版)
1、namespace创建
2、作用域限定符::表示“的”
3、名字空间合并
4、声明和定义分开
5、名字空间指令using namespace
6、名字空间嵌套
7、名字空间别名typedef
其他内容暂无:
详细参考:C++名字空间详解