1.主函数的形参:int main(int argc, char *argv[]){};第二个形参argv[]是一个C风格字符串数组,第一个形参argc则用于传递该数组中字符串的个数。
2.return 语句:
(1).返回引用时:当返回的是引用类型的时候,没有复制返回值。相反,返回的是对象本身,不是对象的副本。例如:
const string& manip(const string& s1, const string& s2 )
{
return s1.size()<s2.size()?s1:s2;
} 形参和返回类型都是指向const string 对象的引用,调用函数和返回结果时,都没有复制这些string对象。
(2).千万不要返回局部对象的引用(和指针):当函数执行完毕时,将释放分配给局部对象的存储空间。此时,对拒不对象的引用就会指向不确定的内存。例如:
const string& manip(const string& s)
{
string ret=s;
return ret;
}这个函数会在运行时出错,因为它返回了局部对象的引用。
(3).引用返回左值:返回引用的函数返回一个左值。因此,这样的函数可用于任何要求使用左值的地方:例如:
char &get_val(string &str ,string::size_type ix)
{
return str[ix];
}
int main()
{
string s("a value");
cout<<s<<endl;
get_val(s,0)='A';//在这里作为左值使用
cout<<s<<endl;
return 0;
}
如果不希望引用返回值被修改,返回值应该声明为const:
const char &get_val(...)
3.递归:int faction(int val)
{
if(val>1)return faction(val-1)*val;
return 1;
}
4.默认实参:string screenInit(string::size_type height,string::size_type width=50);记住一点即可:默认实参是放在形参表的最后。
5.内联函数:内联函数是在返回类型前面加上关键字inline。如:inline const string& shorterstring(const string &s1,const string &s2){}
内联函数能够在程序中每个调用电内联地展开,是为了消除函数在调用的时候的额外执行开销。内联函数一般放在头文件中。
6.类成员函数:调用成员函数是使用对象来调用。
(1)this指针:每一个成员函数都有一个额外的、隐含的形参this。在调用成员函数时,形参this初始化为调用函数的对象的地址。
(2)const成员函数的引入:跟在成员函数声明的形参表后面的const所起的作用是:const改变了隐含的this形参的类型。如:bool Sale_item::same_isbn(const Sale_item *const this ,const Sale_item &rhs) const {} 使用这种方式的const的函数称为常量成员函数。由于this是指向const对象的指针,const成员函数不能修改调用该函数的对象。也就是说在调用的时候不能修改他们的对象的数据成员。
(3)指针this:在成员函数的调用时,指针this实际上是指向被调用函数所属对象的数据成员。
7.重载函数:出现相同作用域的两个函数,如果具有相同的名字而形参表不相同,则称为重载函数。
8.指向函数的指针:函数指针是指指向函数而非指向对象的指针。像其他的指针一样,函数指针也指向某一个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。如:bool (*pf)(const string &,const string &)这个语句将pf声明为指向函数的指针,它所指向的函数带有两个const string &类型形参和bool类型的返回值。
(1)用typedef简化函数指针的定义:函数指针类型相当的冗长。使用typedef为指针类型定义同义词。可将函数指针的使用大大简化:
typedef bool (*cmpFcn)(const string &,const string &)
该定义表示cmpFcn是一种指向函数的指针类型的名字。在要使用这种函数指针类型时,只需要直接使用cmpFcn即可,不必每次都要把整个类型声明全部写出来。
(2)在初始化函数指针时,必须返回类型和形参表的类型都完全一致。如:
typedef bool (*cmpFcn)(const string &,const string &);
bool lengthcompare(const string &,const string &);
cmpFcn pf=lengthcompare;将这个函数的指针指向lengthcompare函数。