C++面向对象(一)--类(Classes)

转载链接–zqixiao_09
类是一种将数据结构和函数组织在同一个结构里的逻辑方法。定义类的关键字为class,其功能与c语言的struct类似。

class class_name//类的名称(用户自定义)
{
	permission_label_1://允许范围标志(private,
		member1;//数据或函数定义
	permission_label_2:
		member2;
	...
}object_name;//是一个或几个对象(object)的标识

使用范围操作符::用来在一个class之外定义该class成员。在class内部只是定义它的原型prototype,而实现都是在class之外定义的。使用class的一个更大的好处就是我们可以用它来定义多个不同的对象。
基于对象和面向对象编程,这个概念中,数据和函数都是对象的属性(properties),而不是以前在结构化编程(structured programming)中所认为的对象是函数参数。
构造函数和析构函数
对象Object)在生成过程中常常需要初始化变量或分配动态内存,以便我们能够操作,或防止执行过程中返回意外结果。通过声明一个与class同名的函数来定义。当且仅当要生成一个class的新的实例9instance)时候,也就是当且仅当声明一个新的对象时,或给该class的一个对象分配内存的时候,这个构造函数将自动被调用。
C++虚函数表解析—haoel
1)C++中的虚函数作用主要是实现了多态的机制,多余多态,简而言之就是用父类型别的指针指向其子类实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类指针有多种形态,这是一种泛型技术。所谓的泛型技术就是试图使用不变的代码来实现可变的算法。模板技术,虚函数技术。试图做到编译时决议,要么试图做到运行时决议。
虚函数是通过一张虚函数表来实现的。主要是一个类的虚函数的地址表,这张表解决了继承,覆盖的问题。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,当我们用父类的指针来操作一个子类时,指明了实际所应该调用的函数。c++编译器保证虚函数表的指针存在于对象实例的最前端。

//假设我们有这样一个类
class Base{
	public:
		virtual void f()
		{cout<<"Base::f"<<endl;}
		virtual void g()
		{cout<<"Base::g"<<endl;}
		virtual void h()
		{cout<<"Base::h"<<endl;}
		}
		//我们可以通过Base的实例来得到虚函数表

typedef void(*Fun)(void);//定义函数指针
Base b;类的实例化对象
Fun pFun = NULL;
cout<<"虚函数表地址:"<<(int*)(&b)<<endl;
cout<<"虚函数表-第一个函数地址:”<<(int*)*(int*)(&b)<<endl;
pFun = (Fun)*((int*)*(int*)(&b));
pFun();


		

更多详细参考–c++类的构造函数详解
转载C++中的STL用法总结—Naruto_Q
STL,标准模板库,是一个具有工业轻度的高效的C++程序库,包含计算机领域所常有的基本数据结构和算法。数据结构和算法分离。STL不是面向对象的,基于模板,内联函数。从逻辑层次来看,STL中体现泛型化程序设计思想,引入诸多新词像需求,概念,模型,容器,算法,迭代子。
更多参考链接:HUST_Miao—C++中STL用法超详细总结
C++多线程编程----hitwengqi
C++多线程类Thread(C++11)-----SyGoing

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值