C++初识类和对象

类和结构体

C语言中有结构体这种自定制类型,在C++中,有一种兼容C语言结构体并且功能更加强大的东西—类
在C语言中,结构体内只能定义变量, 而在C++中不仅能够定义变量,还能定义函数

struct Alien
{
	void say()
	{
		cout << "I'm an alien" << endl;
	}
	int _age;
	string _home;
}

不过在C++中,struct通常被替代为class—类
类和结构体的区别:
C++中struct可以被当做结构体来使用,也可以当做类来使用,区别是:当没有指定访问权限的时候,struct的默认访问权限是public,而class的默认访问权限是private

类的封装

C++实现封装的方式—访问限定符,能够选择性的把接口暴露出来给用户使用
访问限定符: public(公有) protect(保护) private(私有)

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

封装本质上是一种管理:就好比小红在家点了一份外卖,她会开放她家的大门或者客厅,但不会让外卖小哥进入她的卧室甚至使用她的物品,对外卖小哥来说,只用把饭放在客厅,或者在门口交给小红就好了,类也是一样,通过访问限定符把类的数据和方法封装一下,然后暴露出公有的接口,合理地访问类内部的数据或方法

类的作用域

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

struct Alien
{
	void say()
	{
		cout << "I'm an alien" << endl;
	}
	void jump();//在类中声明
	int _age;
	string _home;
}
void Alien::jump()//在类外定义
{
	cout << "the anlien is jumping" << endl;
}

类的实例化(创建对象)

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

  1. 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它
  2. 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量

做个比方,类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间

你可能感兴趣的:(LearnC++)