自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 如何禁止一个类被继承?

当我们想将一个类设置为禁止继承时该用什么方式?有两种解决方案。提示:虚继承与友元!!Way1:强行将该类的构造函数与析构函数均设为 private,并设定该类的一个友元函数来构建该类对象,并返回指针。此时继承自该类的类将无法调用该类的构造函数,因此将在编译时报错 • 缺点:将类的使用变得与普通类不兼容,不能在友元函数外定义类对象,用户定义该类必须知道友元函数 • 优点:简单易理解Eg

2015-07-23 18:09:53 2073

原创 4.1 成员函数的各种调用方式(静态成员函数,非静态成员函数,虚拟成员函数)

Q1:成员函数分为三种:静态成员函数,非静态成员函数,虚拟成员函数。本节的讨论均使用以下的类例子:Eg: class Point3d { public: Point3d(int i = 0, int j = 0, int k = 0) :_x(i), _y(j), _z(k){} Point3d norma

2015-07-22 11:41:14 1081

转载 关于register修饰符以及在C 与 C++中的区别

文章此部分转载自:http://blog.sina.com.cn/s/blog_6a1837e90101128k.htmlregister:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多register 变量,它累死也可能不能全部把这些变量放入寄存器

2015-07-22 08:57:46 1588

原创 3.5 指向类成员的指针知识点

<1> 指向类成员的指针给出的是该类成员在类中的偏移量,而不是真正的地址。即假设:Eg:class A { public: int val; }; //此时有: &A::val; //得到的是类成员 val 在类中的偏移量,若 vptr 在对象尾部,则该值为1(或0) A

2015-07-21 11:57:42 381

原创 3.4 继承与数据成员内存布局

Q1:具体继承(单一继承)且无多态的情况• 具体继承(对应于虚拟继承)并不会增加空间或存取时间上的额外负担• 在这种情况下,类对象的内存存储情况如下:Eg: class X { int x; char c; }; class Y : public

2015-07-20 18:33:33 517

原创 3.3 数据成员的存取

本节的讨论针对两种情况的效率进行分析:class X{ public: //数据成员mem static double mem;};X orgin;X * pt = &orgin;//考虑以下两种情况各自的存取效率orgin.mem = 0.0; //case1pt->mem = 0.0; //case2Q1:mem是静态数据成员• 每个静态数

2015-07-20 12:06:18 405

原创 3.1 、3.2 数据成员的绑定与布局

Q1:关于类成员函数中的变量与类数据成员、全局数据之间的绑定关系• 一个 inline 函数实体,在整个类声明未被完全看见之前,是不会被编译器分析的• 该延迟规则对参数列表中的类型名称不起作用,类型名称之前的绑定会在遇见时进行决议(* 重点 *)Eg:typedef int length;int _val = 10;class X{public: X(float a = 0.0) :_va

2015-07-20 12:02:20 478

原创 3.空类的sizeof

Q1:关于继承类大小与空类大小• 一个空类,无基类,其大小为1 :对空类而言,其中含有编译器安插进去的一个 char ,这使的这个类的两个对象得以在内存中配置独一无二的地址• 一个空类,继承自一个空基类,其大小为1 :其基类的大小占1个字节,而其本身并不占空间,通过其基类子对象的独一无二性来体现其本身的独一无二性• 一个空类,继承自一个空的虚基类,其大小分两种情况:1) 提供优化处理,其大小为4:空

2015-07-20 11:58:35 549

原创 类成员指针

Q1:相关简要概述• 希望获得特定成员的指针,然后从一个对象或别的对象获得该成员时,使用类成员指针• 成员指针包含类的类型以及成员类型• 成员指针只用于类的非static成员,因为静态成员不属于任何一个对象,因此不需要用特殊的语法来获取静态成员• 数据成员的指针需要指明两点: 1.成员类型, 2.所属类类型。如:class X { public:

2015-07-18 17:51:17 483

原创 运行时类型识别

Q1:运行时类型识别(RTTI)简述• 通过下面两个操作符实现RTTI:1) typeid 操作符,返回指针或引用所指对象的实际类型2) dynamic_cast操作符,将基类类型的指针或引用安全的转换为派生类型的指针或引用对于带虚函数的类,在运行时执行RTTI操作符,对其他类型,在编译时计算RTTI操作符Q2:dynamic_cast 操作符• dynamic_cast操作符一次执行两个操作:验

2015-07-18 11:45:18 542

原创 多重继承与名字二义性

Q1:关于类作用域与名字二义性• 在多重继承下,名字查找同时在所有基类子树上并行进行• 成员函数或数据成员的查找通过两步实现:1) 名字查找2) 确定查到的名字是否合法• 在名字查找阶段并不考虑成员的访问级别• 一个基类子树上的派生类会覆盖其基类的名字• 虚基类中的成员是唯一实例Eg://①关系图如图1 class A { public:

2015-07-18 11:35:46 671

原创 2.4 成员初始化列表

构造函数初始化列表

2015-07-16 22:59:47 441

原创 2.2 复制构造函数的构造操作

复制构造函数复制构造函数的调用逐位拷贝语义学

2015-07-16 22:54:06 490

原创 2.1 默认构造函数的构造操作

默认构造函数的合成,类成员的初始化

2015-07-16 22:44:38 532

原创 1.3 编程范式

编程范式,面向过程模型(OB),抽象数据类型模型(ADT),面向对象模型(OO)

2015-07-16 22:28:44 603

原创 1.2 关键词带来的差异,class 与 struct

struct 与 class 的实际区别与使用区别

2015-07-16 22:02:02 748

原创 1.1 对象模型

C++数据成员分类,虚继承,对象模型

2015-07-16 21:49:17 326

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除