《黑马程序员C语言教程:C++易犯错知识点黑马程序员:二).docx》由会员分享,可在线阅读,更多相关《黑马程序员C语言教程:C++易犯错知识点黑马程序员:二).docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、黑马程序员C语言教程:C+易犯错知识点黑马程序员:二) C+易犯错学问点(二) 16、要想共享初始化的过程,可以先定义一个共享成员函数,然后每个构造函数都调用之。 17、C+供应的默认构造函数是个无参构造函数,它仅负责创建对象,而不做任何初始化工作。只要一个类定义了一个构造函数,C+就不再供应默认的构造函数。(假如此时还想要无参构造函数,则须要自己定义) 与变量定义类似,在用默认构造函数创建对象时,假如创建的是全局对象或静态对象,则对象的位模式全为0,否则对象值是随机的。 创建对象的唯一途径是调用构造函数。 静态对象只被构造一次,全部全局对象都在主函数main()之前被构造。 18、面对对象程
2、序设计主要是两方面:面对对象应用程序设计,类库的设计。面对对象程序设计的关键是如何抽象和分类。 19、全局变量、静态变量、常量存放在全局数据区,全部类成员函数和非类成员函数代码存放在代码区,为运行函数而安排的局部变量、函数参数、返回数据、返回地址等存放在栈区,余下的空间都被作为堆区。 void* malloc(size_t);和void free(void*);在头文件malloc.h中声明。而操作符new和delete是C+的一部分,无须包含头文件,它们都是从堆中安排和释放内存块,但是详细操作上两者有很大的区分。 操作堆内存时,假如安排了内存,就有责任回收它,否则运行的程序将会造成内存泄露,
3、这与函数中栈区安排局部变量有本质的区分。 从C+来说,不运用malloc()函数一个缘由是,它在安排空间的时候不能调用构造函数。 类对象的建立是安排空间,构造结构及初始化的三位一体,它们统一由构造函数来完成。而new和delete在创建对象和删除对象时,便同时调用构造函数和析构函数。 定义对象数组,在生成对象时,依次调用构造函数(如依次生成ps0,ps1,ps2.),由于安排数组时,new的格式是类型后面跟元素个数(student* ps=new student10),不能再跟构造函数参数,所以从堆上安排对象数组,只能调用默认的构造函数,不能调用其它任何构造函数,假如该类没有默认的构造函数,则
4、安排对象数组失败。Delete ps告知C+将要该指针指向的是一个数组,假如在中填上了长度信息,C+将忽视。 20、拷贝构造函数 当构造函数的参数为自身类的引用时,这个构造函数称为拷贝构造函数。拷贝构造函数的功能是用一个已有对象初始化一个正在建立的同类对象。 拷贝构造函数定义形式如下: Student(student& s) 27、C+基础笔记(一)墨涵天地 Person p1; p2=p1; 27、C+基础笔记(一)墨涵天地 27、C+基础笔记(一)墨涵天地 在创建对象p2时,对象p1被复制给了p2,同时资源也作了复制,此时p1和p2指向不同的资源,这称为深拷贝。 27、C+基础笔记(一)墨
5、涵天地 假如你的类须要析构函数来析构资源,则它也须要一个拷贝构造函数。C+供应的默认函 数只是对对象进行浅拷贝复制。假如对象的数据成员包括指向堆空间的指针,就不能运用这种拷贝方式,要自己定义拷贝构造函数,为创建的对象安排堆空间。 21、静态成员 这种属于类的一部分,但既不适用于一般成员函数,也不适用于全局变量表示的数据,我们用静态成员来表示。 一般状况下,我们在类的内部实现中对静态数据成员进行定义(在类的内部实现中安排空间和初始化)。 Int student:noOfstudent=0; 静态数据成员一般用于: 标记一个事务的发生与否,某个特定的指针,改变的对象等。 静态成员函数定义是类的内部
6、实现,属于类的一部分,定义位置同一般成员函数。与静态数据成员一样,静态成员函数与类相联系,不与类的对象相联系,所以访问静态成员函数时,不须要对象。假如用对象去引用静态成员函数,只是用其类型。 #include using namespace std; cla Student public: static int number() return noOfStudents; protected: char name40; static int noOfStudents; ; int Student:noOfStudents=1; int main() Student s; cout * cla S
7、c public: void nsfn(int a);/类同声明成Sc:nsfn(Sc* this,int a) static void sfn(int a); /无this指针 /.; void f(Sc& s) s.nsfn(10); /C+编译成Sc:nsfn(&s,10) s.sfn(10); /C+编译成Sc:sfn(10) 静态的static一词与静态存储类的static是两个概念,一个论及类,一个论及内存空间的位置及作用域,所限定以要区分静态对象和静态成员。 黑马程序员C语言教程:C+易犯错学问点黑马程序员:二) 黑马程序员C语言教程:C+易犯错学问点黑马程序员:一) 黑马程序员c语言教程:空值学问点梳理 黑马程序员c语言教程:Oracle概念 黑马程序员c语言教程:Oracle指令 黑马程序员c语言教程:Oracle概念 黑马程序员c语言教程:Oracle指令 黑马程序员c语言教程:多表查询 黑马程序员c语言教程:SQL函数 黑马程序员c语言教程:DML语言强化 本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!第6页 共6页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页
限制150内