网站建设资讯

NEWS

网站建设资讯

C++入门02-创新互联

类和对象(上)

[本节目标]

成都创新互联从2013年创立,先为肃州等服务建站,肃州等地企业,进行企业商务咨询服务。为肃州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
  1. 面向对象和面向对象初步认识
  2. 类的引入
  3. 类的定义
  4. 类的作用域
  5. 类的实例化
  6. 类的访问限定符及封装
  7. 类的对象大小的计算
  8. 类成员函数的this指针

1. 面向对象和面向对象初步认识

C语言是面向过程的, 关注的过程, 分析出求解问题的步骤, 通过函数调用逐步解决问题.

C++是基于面向对象的,关注的是对象, 将一件事情拆分成不同的对象, 靠对象之间的交互完成.

2. 类的引入

C语言中, 结构体中只能定义变量, 在C++中, 结构体内不仅可以定义变量, 也可以定义函数.

3. 类的定义

Class为定义类的关键字, ClassName为类的名字(PersonInfo), {}中为类的主体, 注意类定义结束时后面是分号 .  和C语言相比,  结构类似, 关键字不同.

类中的元素称为类的成员:  类中的数据称为类的属性或者成员变量如上图(_name, _gender, _age),;类中的函数称为类的方法或者成员函数如上图(SetStudentInfo(). PrintStudentInfo() ).

类的两种定义方式:

  1. 声明和定义全部放在类体中
  2. 声明放在.h文件中, 类的定义放在.cpp文件中,更推荐使用这种方法

    需要注意: 成员函数如果在类中定义, 编译器可能会将其当成内联函数处理.

    图1 在类中定义了一个ShowInfo函数信息

    图2 对类进行了实例化, 创建了PI这个类的实例,  然后调用了ShowInfo函数

    图3 是进行反汇编代码, 可以看到在代码中 ShowInfo函数全部被展开, 该函数并没有到栈中调用(即没有出现call ShowInfo这行指令)

    由此可见ShowInfo函数被当成内联函数展开了.  其实所有在类中定义的函数都会被当成内联函数, 但具体展开与否是由编译器自己决定的, 相对复杂的函数可能就不会被展开(这样节省资源), 简单的函数就展开(这样提升效率) !

    4. 类的访问限定符及封装

    封装是什么?

    1. 将数据和操作数据的方法进行有机结合, 隐藏对象的属性和实现细节, 仅对外公开接口来和对象进行交互.

    2. 封装本质上是一种管理, 将类的数据和方法都封装到一起, 使用protected/private把成员封装到一起, 开放一些共有的成员函数用来对成员合理的访问. 所以封装本质是一种管理.

    C++实现封装的方式: 用类将对象的属性与方法结合在一块, 让对象更加完善, 通过访问权限选择性的将其接口提供给外部的用户使用

    类的作用域

    类定义了一个新的作用域, 类的所有成员都在类的作用域中. 在类体外定义成员, 需要使用::作用域解析符指明成员属于哪个类域.

    类的实例化

    用类创建对象的过程, 称为类的实例化

    可以看到, 当成员变量为公有属性时, 在类的外部进行成员访问时, 编译器推荐有4个选项_____________________________________________________________________

    再次观察, 将类中的成员变量用private修饰之后, 再次进行成员访问时, 编译器只允许调用公共区的ShowInfo()函数了.

    注意: 访问限定符只在编译的时候有效, 当数据映射到内存后, 没有任何区别.

    总结:

    访问限定符: 

    Pubulic(公有) | protected(保护) | private(私有);

    Public: 可以在类外直接被访问;

    Protec , private: 在类外无法直接被访问;

    Class的默认访问权限为private, 可以在类内使用public更改访问权限;

    访问限定符的作用域从当前限定符开始, 知道下一个访问限定符出现位置结束

    Struct的默认访问权限为public

    问题: C++中struct和class的区别是什么?

    答: 1 . struct 是沿用兼容C语言的语法,  C++可以在struct中定义成员函数

    2 .C++一般使用class, 默认访问权限是private , struct是public

    未完待续...

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:C++入门02-创新互联
网站链接:http://njwzjz.com/article/cdidod.html