前言
本次总结接上次总结。
重点
1.指针:*p是值,p是地址:
指向常量的指针 const int *p;
它告诉编译器,“*p”是常量,不能将它作为左值进行操作;
常量指针 int x=5; int * const p = &x;
编译器把“p”看作常量地址,所以不能做左值;
指向常量的常量指针 int x=2; const int * const p = &x;
指针和指针的对象都不能改动。
2.要输出数组的内容、对数组进行升幂排序、反转数组的内容、复制数组的内容等操作,需要包含头文件<algorithm>
;要对数组进行降幂排序和检索,需要包含头文件<functional>
。
3.C++提供了两种格式控制方式:一种是使用iso_base类提供的接口;另一种是使用一种称为操控符的特殊函数。不带形式参数的操控符定义在头文件<iostream>
中,带形式参数的操控符定义在头文件<iomanip>
中,注意:无参数的操控符函数不能带有“()”号。
4.数据的封装性
私有的数据成员,必须通过公有的成员函数才能使用。
5.面向对象的程序设计具有抽象、封装、继承和多态性等。对象称作类的一个实例;封装是通过存取权限实现的;不同的对象可以调用相同名称的成员函数,但可导致完全不同的行为的现象称为多态。
6.函数参数
将对象作为函数参数 :是将实参对象的值传递给形参对象,这种传递是单向的;
void swap(string,string); //使用string类的对象作为函数参数
void main()
{
string str1("现在"), str2("过去"); //定义对象str1 str2
swap(str1,str2); //使用传值方式传递str1 str2的数据成员值
}
void swap(string s1, string s2) //string类的对象s1和s2作为函数参数
{
string temp=s1;s1=s2;s2=temp;
}
将指向对象的指针作为函数参数,形参是对象指针,实参是对象的地址值。当在函数中改变形参的值时,改变的就是原来实参的值。
void swap(string *,string *); //使用string类的指针作为函数参数
void main()
{
string str1("现在"), str2("过去"); //定义对象str1 str2
swap(&str1,&str2); //使用传地址值方式传递str1 str2的地址值
}
void swap(string *s1, string *s2) //string类的对象指针s1和s2作为函数参数
{
string temp=*s1;*s1=*s2;*s2=temp;
}
引用作为函数参数:在函数调用时,实参对象名传递给形参对象名,改变形参对象的值就是改变实参对象的值。
void swap(string&,string&); //使用string类的引用对象作为函数参数
void main()
{
string str1("现在"), str2("过去"); //定义对象str1 str2
swap(str1,str2); //传递对象的名字:str1 str2 必须使用对象名
}
void swap(string &s1, string &s2) //string类的引用对象s1和s2作为函数参数
{
string temp=s1;s1=s2;s2=temp;
}
函数返回值作为函数的参数
7.函数返回值
C++函数的返回值类型可以是除数组和函数以外的任何类型。
返回引用的函数
返回指针的函数
返回对象的函数
8.内联函数
使用关键字inline说明的函数称为内联函数。除具有循环语句、switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数。使用内联函数能加快程序执行速度,但是如果函数体语句多,则会增加程序代码的大小。所以,内联函数应该:语句少,并被频繁调用。
如果在声明类的同时,在类体内给出成员函数的定义,则默认为内联函数。如:
int GetX() { return x; }
则GetX为内联函数。
9.函数重载
函数重载的区别有3个:一是参数类型不同,二是参数个数不同,三是const。仅有函数返回值不同是区分不了重载函数的。
10.静态联编和动态联编
动态联编(迟后联编)直到程序运行时才能确定调用哪个函数;支持的多态性称为运行时的多态性,由虚函数支持。
静态联编(先期联编)编译时进行的;支持的多态性称为编译时的多态性。
总结
先整理这么多吧,都是当时考试的时候重点复习的,希望明年这个时候可以帮到大家,我还会继续总结的。