转载自:黑凤梨の博客
C++易混概念与定义
const 修饰符
const修饰符的作用是修饰一个不能被更新的参数。
程序一:
#include <iostream>
using namespace std;
int main()
{
int i;
i = 1;
cout<< i <<endl;
system("pause");
return 0;
}
输出结果:
程序二:
#include <iostream>
using namespace std;
int main()
{
const int i;
i = 1;
cout<< i <<endl;
system("pause");
return 0;
}
报错:
这说明:
1.被const修饰的对象如果不是在函数体外部定义,则必须进行初始化。
2.被const修饰对象不能在程序中修改。
因此被const修饰的对象是不能被改变的常量对象,也叫常类型。
当一个函数使用指针类型或引用参数类型时,函数体中可以对指针指向的对象或引用的对象进行间接修改,为避免被引用的对象或被指向的对象被间接修改,可将其声明为const类型指针或const类型引用。
“&”引用运算符
在拷贝构造函数CMyString(const CMstring &s)中,&s叫做对象引用。“&”被叫做引用运算符(并非取地址运算符)。此时,对象引用作为函数的形参。
在C++中引用作为形参的一般用法格式:
形参说明格式为:type1 &a
对应实参的格式为:b
其中,a前面的type1是引用的对象类型,同时也是实参b的类型。形实结合时,建立a和b之间的“引用”关系(a是b的引用,a是b的别名),在被调函数体内,a就等于b。对a的赋值实际上就是对b的赋值,所以可以通过引用带回计算结果。
new和delete
new和delete是动态存储空间分配和释放的运算符。
(1)new动态分配存储空间
str = new char[len+1]语句的作用是:str被设置为指向被动态分配的字符串存储空间的指针。
(2)delete释放存储空间
在析构函数~CMyString(){if (len) delete str;}中,delete str 的作用就是释放字符串存储空间。