【C++】类与对象初了解

1.类的定义

在C++中,类的概念类似于结构体,但比结构体内可以定义变量,也可以定义函数。

class classname {

	//类体:由成员变量和成员函数组成

};//注意;
  • 1.若成员函数在类内定义,编译器会当做内联函数处理。
class date {
	void show() {
		cout << "123" << endl;
	}

};
  • 2.声明放在.h文件,类的定义放在.cpp文件(最好选择这种方式)
//.h文件声明
class date {
	void show() ;
};
//.cpp文件定义
#include"person.h"
	void date:: show() {
		cout << "123" << endl;
	}

2.封装与类的访问限定符

面向对象的三大特性封装,继承,多态
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
C++实现封装的方式:用类将对象的属性与方法结合在一起,让对象更加完善,通过访问权限限定符将其接口提供给外部的用户使用。
访问限定符

  • public:修饰的成员可以在类外直接被访问
  • private/protected:在类外不能被直接访问
  • class默认访问权限为private;struct访问权限默认为public
  • 访问限定符作用域:此访问限定符出现到下一个访问限定符出现

3.类的作用域

类的所有成员都在类的作用域中,在类外定义成员,需要使用::作用域解析符来指明成员所属类。
注意:只有public修饰的成员可以在类外被访问。

class person {
public:
	void print();
private:
	int _age;
	char _name[20];
};
void person::print() {
	cout << _age << _name << endl;//这里是成员函数定义,可以直接调用成员变量。
}

4.类对象模型

用类创建对象的的过程就是类的实例化

类对象的大小

  • 类对象的大小就是类成员变量的大小。
  • 内存对齐规则与结构体相同。
  • 空类大小为1.为了不同对象具有不同的地址。
  • 类成员函数存放于代码区

5.this指针

c++编译器给每个成员函数增加了一个隐藏的指针参数,让该指针指向当前对象,在函数体调用成员变量的操作,即为调用当前对象的成员变量。对于用户是透明的,不需要做任何操作

#include<iostream>
using namespace std;
class date {
public:
	setdate(int year, int mouth, int day)
	{
		_year = year;
		_mouth = mouth;
		_day = day;
		//this->_year = year;
		//this->_mouth = mouth;
		//this->_day = day;
		//以上两种操作是相同的。
	}
private:
	int _year;
	int _mouth;
	int _day;
}
int main(){
	date d1,d2;
	d1.setdate(2019,9,24);
	d2.setdate(2019,9,23);
}

this指针特性

  • 指针类型为 *const ,不可以修改指向对象。
  • 只能在成员函数内不使用。
  • this指针本质是成员函数的第一个隐形参数,通过编译器自动传递,不需要用户操作。
  • this指针存放于ecx寄存器中(vs是在此寄存器)

思考题:this指针可以为空吗?

    可以,不过得分情况。
 -  当调用的成员函数不调用成员变量时正常运行。
 -  当调用的成员函数调用成员变量时编译器崩溃。
发布了53 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43550839/article/details/101199257