2013.5.28 delete []str;
今天在看老师课件的时候,看到析构函数里有一条语句:
delete []str;
有印象,但一时想不起来。遂查询了一下。
解释:
delete str1; //释放指针变量的内存
delete [] str1; //释放指针数组的内存(说是指针数组,也不是很准确)
指针数组:
在C语言和C++语言中,数组元素全为指针的数组称为指针数组。
一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。
例如,一个一维指针数组的定义:int *ptrarray[10]。
也可以:
char *str; //定义一个字符指针
str=new char[20]; //以数组的形式赋给str一片内存
delete []str; //释放字符指针数组的内存
2013.5.29 返回引用 string&
今天查 string& ,看到个帖子不错。
上面的解释:
“string& 是返回引用,这个是C++的特有语法,返回引用的好处和指针类似,就是为了避免返回对象(构造函数等额外开销),提高程序效率。而且,引用和指针又不完全一样,它有其特殊的优点,可以参看C++Primmer中引用和指针的区别相关阐述。”
下面接着有人提问:
string& trim_string(string &s, const char *chars)
main()
{
trim_string("1234", '5');
}
这样调用出了问题啊,是“1234”这里错了,那我应该怎么改呢?
解释:
“你传的是const值,函数接受的是非const值,不行
要么把"1234"定义成std::string
要么把原来函数里面的参数写成const的 ”
当返回一个变量时,会产生拷贝。当返回一个引用时,不会发生拷贝。
2013.5.29 常成员函数
常见形式:
const Time t1; ||
Time const t1; &&
void get_time() const;
性质:
1.常成员函数不能更新对象的数据成员
2.当一个对象被声明为常对象,则不能通过该对象调用该类中的非const成员函数
2013.8.2 数组初始化总结
整型数组初始化:
char a[3][4]={0};
字符数组初始化:
int b[3][4]={0};
布尔型数组初始化:
bool c[5]={0};
结构体初始化:
struct instruction{ //定义结构体,存储指令
int head; //识别指令
int d;
int n; //指令附加内容
}pro[1000]={0}; //存储程序体,相当于RAM
初始化之后都会变成0。
(char数组变为\000,int数组变为0,bool数组变为false,这个例子里的结构体所有元素的每一个成员值都为0)
2013.8.6 二维数组的引用作为函数参数传值
例1:
1 #include <iostream>
2 #include <cstring>
3 using namespace std;
4
5 char words[1000][17]={