目标:
- 类和对象的认识
- 类的定义
- 类的作用域
- 类的实例化
- 类的限定符
- 类的大小
- 类的成员变量this
类和对象的认识
c语言是一个过程语言,关注的是结果。但是c++是面向对象的,关注点是对象。在之前的c里面,结构体值能定义变量,在c++不仅仅是变量,还可以是函数。
类的定义
c++作为面向语言,可以是类来替代结构体
类和结构体有啥区别? 我认为好像一个有作用域另一个没有吧
class className{
}; //分号 java里面不需要
class是关键字 className {} 这些和java一样。
创建的和java的不同
方式一:
class Animal{
public:
void showInfo(){
}
public:
char *name;
int age;
};
这个方式和java基本一样,但是后面多了一个分号,作用域修饰符只需要写一次。
方式二:
头定义:
class People{
public:
void showInfo();
public char *name;
};
class实现
#include "people.h"
void People::showInfo(){
}
一般采用第二种。
类的封装
- 访问修饰符
封装方式:类将对象的属性和方法结合在一起,使得对象更完善,通过修饰符将其提供给不同的用户使用。class默认使用的是private.
和java有区别:没有默认修饰符
类的作用域
类定义了一个新的作用域,类的所有成员变量定义在作用域内,在类外定义成员,需要使用::作用域解析符知名成员属性那个类域。
class People{
public :
void println();
};
People::println(){
}
类的实例化
用类型创建对象的过程,成为类的实例化。
- 类只是定义了一个壳子,限定了这个类有那些东西,有什么功能,并没有在堆中分配空间,进行存储。
- 一个类可以实例化多个对象
如何计算类的大小
- 计算
class A{
public :
void printA{
}
private:
char _a;
}
一个类的大小 ,等于类中所有的成员变量之和,同时会进行代码对齐,null类分配了一个字节。
内存对齐
this
我们创建多个类,使用s1调用的是s1的方法,s2调用的是s2的方法,c++通过一个this指针解决错落的问题,使用了一个指针,让指针指向当前对象,函数内的操作都通过指针来操作。
指针的特性:
- this指针类型,*const
- 只在成员函数内部使用
- this指针本质其实是一个形式参数,谁调用就把说的指针给它,对象是不存储指针的。
- thi指针是一个隐含的指针形参,一般的情况由编译器自动传递。
网友评论