您的位置:首页 > 编程语言 > C语言/C++

C++编程经验汇总(未完)

2005-06-03 23:10 465 查看
过程化语言
[/b]一、函数[/b]
1、重载函数需要在参数个数、参数类型或参数顺序上有所不同。
2、默认函数从右往左逐渐定义
3、内联函数不允许有复杂的结构控制语句。递归函数不能用来作内联函数
4、函数的返回值时将值赋予一个生命期极短的临时变量,在完成返回值赋值后,该临时变量销毁。
5、匹配重载函数的顺序:寻找严格的匹配->用过内部转换需求一个匹配->通过用户定义的一个转换寻求匹配。

二、数组[/b]
1、二维数组可以通过将为进行顺序操作。此时传递的是二维数组首元素地址。

三、引用
[/b]1、引用在声明时必须初始化,但它不占内存空间。
2、不许对void类型的元素、数组和NULL进行引用。
3、不许引用一个非返回引用的函数的返回值。
4、而返回引用的函数返回时不产生临时变量,但它返回的须是一个全局变量或静态变量,否则返回值会在函数结束后销毁造成无值返回。
5、返回引用时的函数表达式可以作为左值。
6、可以通过加const防止修改所引用单元的值。形式为:
形参:const int &a,实参为:a

[/b]面向对象程序设计
[/b]一、堆与拷贝构造函数
[/b]1、拷贝构造函数的形参必须是引用方式!
2、当类需要析构函数需要析构资源(比如堆资源),则它也需要一个拷贝构造函数。
[/b]3、构造函数用于类型转换,用户告知的方式是定义一个带参数的构造函数,而只尝试含一个参数的构造函数。

[/b]二、类的派生与继承[/b]1、派生类的构造顺序是:先用它基类的构造函数构造它的基类成分,再用它自己的构造函数构造它自身成分。
2、若想把类作为函数的形参,接受可能传递的基类和其派生类,则这个形参必须是基类类型。这也就是迟后联编,也叫多态性,是面向对象程序语言的特性之一。其他两个是封装性和继承。这个基类形参可以实现基类和派生类声明的基类虚函数。、
3、若是使用虚函数,必须在基类的函数声明中加virtual,否则在传参调用派生类的函数时,会被认为是基类的。而只有在加上virtual后,编译器才会进行迟后联编。
4、虚函数要求:函数名相同、函数类型相同、返回类型相同。否则即使加了vitrtual也不被认为是迟后联编。在VC++中,即使是返回基类指针的成员函数也要求派生类返回的是基类的。
5、抽象类只是被用于继承,它至少有一个纯虚函数,即标记为不具体实现的成员函数,而由抽象类的派生类对它进行不同的定义。抽象类不能有实例。纯虚函数是为派生类在基类中保留的一个位置。假如有个指向抽象类的指针,进行一个没在抽象类中声明的函数,则无法进行。则在继承中普遍存在,即基类指针只能操作基类成员,和识别派生类中的虚函数。

三、多重继承
[/b]1、多个类继承一个类,可在继承中加virtual,表示“如果还没有A类,则加入一个A的拷贝,否则就用已有的那个”,这样各以防止多重继承类的模糊性。
2、多重继承的构造顺序是:虚拟继承类->非虚拟继承类->成员对象->类的构造函数。
3、
存取方式
[/b]继承类型
[/b]

Public
[/b]

Protected
[/b]

Private
[/b]

PublicPublicProtectedPrivate
ProtectedProtectedProtectedPrivate
PrivatePrivatePrivatePrivate
基类中的Private成员不可被继承。而Protected和Private派生的不是之类,因为它们所派生的类不能做基类能做的事,但可以在其Public中调用其基类的函数完成调用。

四、运算符重载
[/b]1、重载的形式:返回类型 operator 运算符号(参数说明);。
2、. :: . * . -> ? :不可被重载。
3、operator + 由值返回是因为它需要一个临时空间存放结果,如果用引用返回则不产生临时空间,无法存放结果。
而operator ++由引用返回是因为它修改了自己的参数,需要返回引用以不产生临时变量而直接修改本身。若用临时变量返回的话,临时变量得到修改,而它本身却没能得到完全的修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: