C++类和对象

什么是类?

类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

类的构成包括成员属性和成员方法(数据成员和成员函数)。数据成员对应类的属性,类的数据成员也是一种数据类型,并不需要分配内存。成员函数则用于操作类的各项属性,是一个类具有的特有的操作,比如“学生”可以“上课”,而“水果”则不能。

类的三大特性

  1. 封装性          将数据和操作封装为一个有机的整体,由于类中私有成员都是隐藏的,只向外部提供有限的接口,所以能够保证内部的高内聚性和与外部的低耦合性。用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员,能够增强安全性和简化编程。

  2. 继承性          更符合认知规律,使程序更易于理解,同时节省不必要的重复代码。

  3. 多态性          是指同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向父类(基类)的指针,来调用实现子类(派生类)中的方法。

class 类名 {
    public: 公有成员
    private: 私有成员
    protected: 保护成员
};

什么是对象?

类的实例称为对象。

就像声明某种类型的变量一样,声明一个类类型的对象,就是类的实例化,会涉及到必要的内存分配。

类名 对象名 = new 类名(参数列表)

int *p = new int[10];

Student student = new Student();

this指针:

this是一个指针,里面放置的是当前对象的地址(成员函数执行时,调用该成员函数的对象)
this指针是类“成员函数”第一个隐藏的参数,该指针指向调用成员函数的对象(当前对象)

等讲构造函数再继续深入。

类名限定:

如果成员函数不在类内部定义,而在类.cpp文件中定义,就需要加上类名限定。如下:

class Student{
public:
	int age;
	char sex;
	void getInformation();
	
};

这里之所以要加public是因为类默认是私有的,不能在外部直接赋值。像下面这样。于是我就改成了public,就像结构体struct一样了。

int main(int argc, char *argv[]) 
{
	Student s1;
	s1.age = 10;
	s1.getInformation();
	return 0;
}

Student.cpp,加上类名限定 Student::

#include "Student.h"
void Student::getInformation()
{
	cout<<this->age<<endl;
}

还有命名空间的类的成员函数,于此都差不多,也举个例子

namespace one{
	class Student{
		public:
		int age;
		char sex;
		void getInformation();
	};
};

调用就是one::Student::getInformation();

class和struct的区别:

struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的

我依旧强调struct是一种数据结构的实现体,虽然它是可以像class一样的用。我依旧将struct里的变量叫数据,class内的变量叫成员,虽然它们并无区别。

struct:       1.可以通过对象名直接访问

                   2.声明成员为公有成员

class:       1.可以通过对象名直接访问

                   2.声明成员为公有成员

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值