C++ 单元六 类与对象

发现很多都不知道,所以打算有机会重看了书再来回答,查询问题。先把问题写下来,同时自己思考下,在53处未做

知识点提问

—-面向对象化很多都不知道,也百度不到,就空着不回答了,以后若注意到再改

1. 面向过程程序设计的模块是什么?对模块的要求是什么?答:面向过程是一种以过程为中心的编程思想,是一步一步的实现,模块就是一层一层的具体。要求是一步一步的完成。
2.什么是软件危机?答:落后的软件生产方式无法满足迅速增长的计算机软件需求。
2. 面向过程程序设计的主要缺点是什么?为什么?答:模块化在规模不大的时候很清楚,大的规模易混乱。不易维护,不易复用,不易扩展。
3. 面向对象程序设计的模块是什么?对模块的要求是什么?答:模块是一个抽象化物体,实体。
4. 什么是类?它是一种类型,还是变量?答:类型
5. 什么是对象?它是一种类型,还是变量?答:类型
6. 类与对象是什么关系?在内存中存在的是内还是变量?答:类是对象的实体化,在内存中存在的是内。
7. 怎么定义一个类?用什么关键字?什么是类体?类体后面有分号吗?答:用class定义,类体是类内部的数据和方法。类后有分号。
8. 一个类必须有类名吗?没有类名的类怎么使用?答:有类名。无类名为匿名函数。会自动析构,所以需要一个外界一个变量获取。
9. 为什么要用访问关键字private,protected,public对类的成员进行限定?答:对类进行封装
10. 类的三种访问权限private,protected,public各是什么含义?它们可以被省略吗?如果省略,默认是那种?结构体成员的默认访问权限是什么?答:private是私有的,protected是受保护的,public是公共的,默认是public,结构体默认的是public。
11. 什么是类的外部访问和内部访问?分别能访问那些成员?答:外部能访问public成员,内部使用函数可以访问所有成员。
12. 类的成员函数必须是外部访问吗?如果有私有成员函数,谁有权访问?答:成员函数不必是外部访问,能访问的只有类中的函数。
13. 什么是函数的声明?什么是函数的定义(或称实现)?答:直接对函数进行声明,不加{},定义加了{}。{}里面写命令
14. 声明内联(inline)成员函数有哪两种方式?答:在类内部声明,加上inline关键字,在类外定义。在类内部声明,在类外部定义,同时加上inline关键字。注意:此种情况下,内联函数的定义通常应该放在类定义的同一头文件中,而不是在源文件中。这是为了保证内联函数的定义在调用该函数的每个源文件中是可见的。
15. 在类外定义成员函数时,必须对成员函数进行何种限定?为什么?答:前面需要类名和域作用符,进行对函数的限定是某个类中的函数。
16. 若干个同类对象,他们的数据成员是共享存储,还是单独存储(每个对象有自己的数据成员)?成员函数的存储方式呢?系统如此设计的理由是什么?答:单独存储,分别存在自己类变量中。对每个同类类名进行区分。
17. this指针指向谁,为什么有this指针?它在哪里?需要定义this指针吗?答:一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象。全局仅有一个this指针,当一个对象被创建时,this指针就存放指向对象数据的首地址。不需要有定义this指针。
18. 静态成员变量是同类对象所共有存储,还是每个对象单独存储的?答:共有存储的。
19. 如何定义和初始化静态成员变量?它有什么作用?它的生命期和作用域如何?答:static定义同时赋值,进行统计,生命期程序结束。
20. 如何定义静态成员函数?它有什么作用?它能访问非静态成员变量吗?答:static 函数,访问静态成员变量,不能访问非静态成员变量
21. 静态成员函数有this指针吗?为什么?答:没有。不与任何的对象参数连续。
22. 定义一个对象,意味着创建该对象,也意味着所有成员变量都必须创建吗?答:是
23. 在类定义中,可以对成员变量初始化吗?答:可以
24.构造函数是类的特殊成员函数,如何定义和识别构造函数?答:函数名和类名相同则是析构函数。
25. 构造函数在什么时间、由谁调用?构造函数的任务是什么?答:在创建的时候,由程序调用,对函数的初始化。
26. 析构函数是类的特殊成员函数,如何定义和识别析构函数?答:~+类名。
27. 析构函数在什么时间,由谁调用,析构函数的任务是什么?答:在程序结束的时候,释放内存的时候使用。
28. 如果不编写构造和析构函数,系统会自动生产,它做什么?答:默认构造和析构。
29. 构造和析构函数允许由返回值吗?返回值可以是void吗?答:不允许由返回值。
30. 构造和析构函数允许带有参数吗?允许带多个参数吗?允许重载吗?答:允许带参数,允许多个,允许重载。
31. 构造和析构函数的访问必须是public吗?为什么?答:是,因为构造,析构是自动初始化或者释放需要的函数。
32. 构造和析构函数可以是内联inline函数吗?答:可以
33. 如果定义了缺省的构造函数,系统还自动生成一个吗?答:缺省,就不自动生成了。
34. 什么是缺少的构造函数?允许由多个缺省的构造函数吗?缺省构造函数必须是系统自动生成吗?缺省构造函数必须是没有参数吗?答:缺省构造函数是默认构造函数,不接受任何参数,不进行操作的构造函数,声明了函数就不会Dion关于缺省构造函数,只能有一个。
35. 什么是构造函数的参数初始化列表?非构造函数可以有参数初始化列表吗?答:构造函数初始化成员变量,非构造函数可以有参数初始化列表。
36. 参数初始化列表的作用是什么?它该怎么书写?答:初始化值,:变量名(值);初始化顺序和定义顺序有关。
37. 对象构造与析构的顺序是什么?答:先构造后析构。
38. 什么是对象数组?对象数组的每个元素必须是同类的对象吗?答:对象数组是类名定义的数组,每个元素同类。
39. 定义(即创建)对象数组时,需要调用多少次构造函数?为什么?答:数组个数。定义一个对象需要一次构造函数。
40. 析构(即删除)对象数组时,需要调用多少次析构函数?为什么?答:数组个数,有多少个数组析构多少次。
41. 对象数组的初始化该如何书写(语法格式)?答: int ID1, ID2, ID3;EquipmentPiece bestPieces[] = { EquipmentPiece(ID1), EquipmentPiece(ID2), EquipmentPiece(ID3) };
42. 什么是对象指针?什么是对象指针数组?答:类同指针数组
43. 成员变量可以是指针类型吗?什么是成员函数指针?答:可以,指向成员函数的指针。
44. 如何定义成员函数指针?与非成员函数指针有何区别?答:在类中定义函数指针,的静态成员函数采用与一般函数指针相同的调用方式,而受this指针的影响,类的非静态成员函数与一般函数指针是不兼容的。而且,不同类的this指针是不一样的,因此,指向不同类的非静态成员函数的指针也是不兼容的。指向类的非静态成员函数的指针,在声明时就需要添加类名。
45. 如何给成员函数指针赋值?赋值时需要带上参数吗?答:通过对类变量用成员运算符修改,赋值时需要带上参数。
46. 必须用对象的成员函数指针去调用成员函数,而不能用类名调用,为什么?答:对类的封装。
47. 对象、对象指针、对象的引用可以作为函数的形参吗?答:可以。
48. 对象作为形参,参数是如何传递的?有什么缺点?答:传递类。
49. 函数可以返回一个对象,对象指针,对象的引用吗?答:可以
50. 函数内部是如何返回一个对象的 ?答:定义的时候定义类名即可返回对象。
51. 同类对象可以相互赋值吗?对象的各个数据成员都是如何赋值的?赋值时,对象的函数成员也相互赋值吗?答:可以,直接覆盖。
52. 无关的非同类对象可以相互赋值吗?为什么?答:不可以,类型不同。
53. 什么是对象的浅拷贝?浅拷贝在什么情况下会出错(不适合场合)?答:
54. 拷贝构造函数是类的特殊成员函数、如何定义和识别拷贝构造函数?答:
55. 拷贝构造函数在什么时间、由谁调用?拷贝构造函数的任务是什么?答:
56. 如果不编写拷贝构造函数,系统会自动创建一个,它执行浅拷贝吗?答:
57. 同类对象赋值时,会调用拷贝构造函数吗?答:
58. 在初始化对象(用已有同类对象)时,会调用拷贝构造函数吗?
59. 如果在对象的浅拷贝出错,应该怎么做?答:
60. 拷贝构造函数有且仅有一个形参吗?这个形参是什么类型?答:
61. 结构体的成员变量允许是另一个类的对象吗?(内嵌对象)?答:
62. 组合类对象的构造与析构顺序是怎么样的?答:
63. 组合类允许由多个内嵌对象,其构造与析构顺序如何?答:
64. 什么是类的向前声明?如何声明?什么情况下会用到它?答:
65. 通过类的向前声明,能够知道嘞的内部结构吗(成员变量与函数)?答:
66. 什么是常成员函数?怎么声明?答:
67. 什么是常对象?常对象的成员函数都是常成员函数吗?答:
68. 如何初始化常成员变量?答;
69. const用于对象指针时,分为那三种情况?各是什么含义?如何书写?答:
70. 常引用做函数形参是什么含义?答:
71. 什么是友元函数?如何声明、定义和使用?答:
72. 友元关系由谁认定?友元关系不具有对称性和传递性是什么意思?
73. 友元函数有什么优缺点?
74. 什么是友元类?如何声明,定义和使用友元类?答:

实训十四 贪婪法解连续背包问题。
–贪婪法是一种迭代运算,从一个初始解出发,一步一步逼近最优解。
–背包问题,背包承重量一定,物品价值和重量不一致,如何达到背包承重达到最高价值。
–进行对每个物品的单位大小进行操作。
实训十五 组合类和排序

实训十六 拷贝构造函数与对象复制
—拷贝构造函数是复制一个完全相同的对象,默认的是浅拷贝。
===用一个对象初始化另一个对象
===对象作为函数的形参
===对象作为返回值
这三种都会有拷贝。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值