C++类与对象(1)

目录

一,面向过程与面向对象的初步认识

二,类

1,类的定义

1,声明和定义都放在类当中(编译器可能会把这个当成内联函数来使用)

2,声明放在.h中,类的定义放在.cpp当中(尽可能使用这样的)

 三,类的访问限定符

四,类对象模型

1,类的大小


一,面向过程与面向对象的初步认识

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++类与对象(1)_第1张图片C++类与对象(1)_第2张图片 

  在c++中,为了对对象中的数据或者方法有一定的保护作用,

他具有三大特性(抽象):封装  继承   多态

 封装的面试题,戳这里看哟

 三,类的访问限定符

类的访问限定符有三种

  • public:公有
  • protected:保护
  • private:私有 

 面试题:class与struct的区别? 

用class定义的类:默认的访问权限就是private

用struct定义的类:默认的访问权限就是public 

四,类对象模型

1,类的大小

类中既有成员变量还有成员函数,那么类的大小应该怎么计算呢?

根据对象  .  的方法可以看到student中一个对象的:

C++类与对象(1)_第3张图片

 对象中实际只包含了成员变量,没有包含和成员函数相关的东西

因此要计算一个类的大小,实际和计算结构体的大小是完全相同的。

结论:一个类的大小,实际就是该类“成员变量”之和,注意要内存对齐。空类的大小是1

 2. this存储在栈上,如果成员函数是通过指针调用,this有可能为空。(当this为nullptr,只要在成员函数中没有访问“成员变量”则代码不会奔溃,反之,会。因为在成员函数中,成员变量是通过this访问的)

你可能感兴趣的:(c++,c++)