当前位置:   article > 正文

C++-类与对象-计算类对象的方法-类对象的存储方法_类对象存

类对象存

1. 类

1.1 类的定义

class className
{
 // 类体:由成员函数和成员变量组成

}; // 一定要注意后面的分号
  • 1
  • 2
  • 3
  • 4
  • 5

  class为定义类的关键字,className为类的名字,{}中的是类的主体,类的定义后面有个分号,类中的元素叫类成员,类中的数据称为类的属性或者成员变量,类中的函数称为类的方法或者成员函数

1.2 类的两种定义方法

  1.第一种声明和定义都放在类中

class P
{
public:
	void show()
	{
		cout << name << endl;
	}
private:
	char* name;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

  2.第二种方法,声明放在.h文件中,类的定义放在.cpp文件中

//声明放在person.h中
class p
{
public:
	void show();
private:
	char* name;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

//定义放在类的实现文件中person.cpp中
#include "person.h"

void p::show()
{
	cout << name << endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. 类的访问限定符

2.1 访问限定符

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

2.2 访问限定符特点

  1.public修饰的成员在类外可以直接被访问
  2.protected和private修饰的成员在类外不能直接被访问
  3.访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现为止
  4.class的默认访问权限为private,struct为public
  5.访问限定符只有在编译的时候有用,当数据映射到内存后,没有任何访问限定符的区别

2.3 面试题

问题:C++中struct和class的区别是什么?
  C++需要兼容C语言,因此在C++中struct仍然可以当做结构体去使用,并且struct也可以用来定义类,并且是一样的,区别是struct的成员默认是public,而class的成员默认是private。

问题:面向对象的三大特征:封装,继承,多态
  封装:将数据的操作系统的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。因此,封装本质是一种管理。

3. 类的实例化

  1.用类创建对象的过程叫做类的实例化
  2.类只是一个模型,但是并没有分配实际的内存空间
  3.一个类可以实例化多个对象,当类实例化出对象的时候才占用实际的物理空间,存储类成员变量

4. 如何计算类对象的大小

  1.如果是一个空类,那么类的大小是1
  2.成员函数不占字节
  3.成员变量才占大小,并且存在内存对齐和位段的问题(这部分的内容参看c中的内存对齐和位段的那篇文章)

5. 类对象的存储方式

  1.每个成员是每个对象都有一份的,每一份都有分配实际的内存空间
  2.类的成员函数是所有对象公有的,只有一份,保存在公共代码区

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/548214
推荐阅读
相关标签
  

闽ICP备14008679号