C++面向对象程序设计——类和对象(个人整理)

对象:
object 客观世界中任何一个事物都可以看成一个对象,如自然物体(汽车,房子,班级...)
可以看到一个班级作为一个对象有两个要素:
1、班级所属系和专业,人数等静态特征(属性);
2、班级的动态特征,学习,开会等(行为);
在C++中,每个对象都是由数据和函数(即操作代码)这两部分组成的。调用对象中的函数就是向该对象传送一个消息,要求该对象实现某一行为(功能)。

面向对象程序设计的特点:封装、(抽象)、继承、多态。
封装与信息隐蔽:
1、将有关的数据和操作代码封装在一个对象中形成一个基本的单位,各个对象间相对独立,互不干扰。
2、将对象中某些部分对外隐蔽,即隐蔽其细节只留下少量接口,以便与外界联系,接收外界消息(即信息隐蔽)。
抽象:抽象的作用是表示同一类事物的本质;类是对象的抽象,而对象则是类的特例(或者说是类的具体表现形式)。
继承与重用:可以重用已有软件中的一部分甚至大部分(软件重用)。
多态性:由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。
类:一组具有相同属性和行为的对象的抽象和描述。类是对象的抽象,而对象是类的实例

在面向对象方法中:
对象:用数据(变量)来表示静态的属性,用方法(函数)来表示动态的行为
类:就是自己定义的一种新的数据类型,是对 对象的属性和行为的抽象和描述;类型的变量,称为对象

声明类类型:
成员访问限定符:
private:只能被本类中的成员函数引用,类外不能调用(友元类除外),也 不能被它的派生类访问。 
public:既可以被本类中的成员函数所引用,也可以被类作用域内其他函数引用
protected: 只能被本类中的成员函数引用, 不能被类外成员访问,但是可以被派生类的成员函数访问
如果在类的定义中既不指定成员类型为private也不指定public,protected,则系统默认是为私有的private。

类和结构体类型的异同:用struct声明的类,如果对其成员不做访问限定符的声明,系统将其默认为public公用的;而class定义的类则默认为private私有的。

内置(inline)成员函数:
在程序调用内置成员函数时并不是真正地执行函数的调用过程(如保留返回地址等处理),而是把函数代码嵌入到程序的调用点。
由于在类体中定义的成员函数的规模都很小,而系统调用函数的过程所花费的时间相对是比较大的,为了减少时间的开销,如果在类体中定义的成员函数中不包含循环等控制结构,系统会自动将它们作为内置(inline)函数来处理。如果成员函数不在类体内定义,而在类体外定义,系统并不把它默认为内置函数,如果想将其作为内置函数,应当用inline作显示声明。
eg:
class Student
{
     public:
     inline void func();
}

inline void Student::func()
{
     ...;
}
注意:
如果在类体外定义inline函数,则必须将类定义和成员函数和定义都放到同一个文件中,否则编译时无法进行置换。
使用内置函数可以节省运行时间,但却增加了目标程序的长度。
内置函数中不能包括复杂的控制语句,如循环和switch语句。
对函数做inline声明只是程序设计者对编译系统提出的一个建议,而非指令性的。
只有在类外定义的成员函数规模很小而且调用频率较高时,才将此成员函数指定为内置函数。
宏定义和内联函数的区别:
宏是字符串替换
宏是在编译器进行(预处理),内联函数是编译后执行时代码嵌入
宏的参数是不占内存空间的
内联函数调用要消耗内存
内联函数可以调试,编译器会对内联函数的参数进行监察或者类型转换

成员函数的存储方式:
每个对象所占用的存储空间只是该对象的数据部分所占用的存储空间,而不包括成员函数代码所占用的存储空间。

















  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值