- 类的定义
class classname
{
//类别:由成员函数和变量组成
};//一定注意后面的分号
类中的元素称为类的成员;类中的数据称为类的属性或者类的成员变量,类中的函数称为类的方法或者类的成员函数。
类的成员函数默认就是内联的。
类的访问限定符及封装:
1. public成员在类外可以直接访问; 2. protected和private成员在类外(在此可将protected和private理解成private)不能够访问 3. 它们的作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止 4. class的体中如何没有定义限定符,则默认访问权限是private 5. struct为public型(因为struct要兼容C)
面向对象的三大特性:封装、继承、多态
class和struct有点相似,那C语言和C++中struct的区别?C++中struct和class的区别?
C语言中的struct的成员不能是函数,而且不能隐藏数据,但C++可以。
C++里的struct的默认权限是public,class的默认权限时private。
类的实例化
- 类的实例化
用类类型创建对象的过程,称为类的实例化。
1.类只是一个模型一样的东西,限定了类有哪些成员,定义出一个雷并没有分配实际的内存空间来存储它
2.一个类可以实例化出多个对象,实例化出的对象,占用实际的物理空间 - 类的对象大小的计算
类的大小,实际就是该类中“非静态成员变量”之和,当然再注意内存对齐
- this指针的特性:
1.this指针的类型:类类型* const
2.指向当前对象,在当前类的成员函数中使用
3.当前对象中并不包含this指针(不影响sizeof的结果)
4.this是成员函数第一个默认的参数,由编译器通过ecx寄存器来自动传递(前提是使用thiscall这个调用约定),对于不定参数用_cdecl调用约定,this指针在所有参数被压栈后压人堆栈
问题:
1.引用底层也是指针,此处为什么不是引用,而使用this指针呢?
因为引用比this出现的晚。
2.this指针是否可以为空?
不可以。
class Test
{
public:
void FunTest()
{
cout<<"FunTest():"<<this<<endl;
}
};
int main()
{
Test* pt = NULL;
pt->FunTest();
return 0;
}
注意:
此时没有问题,因为没有解引用,但是一旦里面有成员变量,就会有问题。