目录
1,声明和定义都放在类当中(编译器可能会把这个当成内联函数来使用)
2,声明放在.h中,类的定义放在.cpp当中(尽可能使用这样的)
一,面向过程与面向对象的初步认识
c语言:面向过程
c++:基于面向对象的
面向对象:对象是指问题中所涉及到的实体。
类与对象:类就是对对象进行描述的。
在c语言中:数据和操作数据的方法是分离开的。(c语言中结构体只能放变量,不能放函数)
在c++中:将数据和操作数据的方法集合到一起。(在结构体中定义函数)
二,类
那我们又如何用c++来实现代码呢?
1,类的定义
class classname{
//也可以用struck
//类的成员函数成员变量
};//注意要有分号
类的俩种定义方法:
1,声明和定义都放在类当中(编译器可能会把这个当成内联函数来使用)
class Student
{
public:
void showInfor()
{
cout << _name << " " << _age << " " << endl;
}
public:
char* _name;
int _age;
};
注意 :
在类中尽量避免成员变量与函数的参数名相同
因此可以在定义成员变量的时候,可以采用以下的方式和形参进行区分:
- _name
- name_
- m_name
在进入公司后,成员变量名字规则和公司代码一致;
2,声明放在.h中,类的定义放在.cpp当中(尽可能使用这样的)
注意:类中的成员函数在类外定义时候,在函数名之前必须要添加类名以及::
在c++中,为了对对象中的数据或者方法有一定的保护作用,
他具有三大特性(抽象):封装 继承 多态
三,类的访问限定符
类的访问限定符有三种
- public:公有
- protected:保护
- private:私有
面试题:class与struct的区别?
用class定义的类:默认的访问权限就是private
用struct定义的类:默认的访问权限就是public
四,类对象模型
1,类的大小
类中既有成员变量还有成员函数,那么类的大小应该怎么计算呢?
根据对象 . 的方法可以看到student中一个对象的:
对象中实际只包含了成员变量,没有包含和成员函数相关的东西
因此要计算一个类的大小,实际和计算结构体的大小是完全相同的。
结论:一个类的大小,实际就是该类“成员变量”之和,注意要内存对齐。空类的大小是1
2. this存储在栈上,如果成员函数是通过指针调用,this有可能为空。(当this为nullptr,只要在成员函数中没有访问“成员变量”则代码不会奔溃,反之,会。因为在成员函数中,成员变量是通过this访问的)