读书日记2012/2/8
来源:互联网 发布:汤富酬 知乎 编辑:程序博客网 时间:2024/05/21 14:53
寒假过完了,回到学校,开始了新的一轮学习。寒假还是像以前那样带回去基本书,作为心理安慰。既然来学校了,就要让安慰变成现实。我给你一个的计划,一个月最少看完一本书。并做适当的总结。计划的第一本书《深入探索C++对象模型》。寒假看了点,就算从2月1日开始的。在二月份要把这本书看完。可以提前,但是不可以拖。
今天上午终于在实验室看了一上午的书,没有开电脑上网。对我来说是个不小的突破(在实验室看不下去书),今天主要看了,第3章:Data 语意学;就在写这篇文章的时候感觉忘差不多了。
一.
class X{};
class Y:public virtual X{};
class Z:public virtual X{};
class A:public Y,public Z{};
1.一个class X内没有含明显的数据,但是sizeof X的结果是1. 事实上并不是空,它有一个隐晦的1 byte,那是被编译器安插进去的一个char。这使的这个class的不同objects得以在内存中配置独一无二的地址。
2.Y和Z的大小是8 byte。受到三个因素影响:
(1)语言本身所造成的额外负担(overhead);
(2)编译器对于特殊情况所提供的优化处理;
(3)Alignment的限制。
二.Data Member的绑定(The Binding of a Data Member)
extern float x;
class Point3d
{
public:
Point3d( float ,float,float);
/ /被传回和被设定的x是哪一个x呢,早期的c++编译器,和现在的,分别
float X() const { return x;}
void X(float new_x) const { x = new_x ;}
private:
float x,y,z;
}
1.早期C++的两种防御性程序设计风格:
(1)把所有的data members 放在class声明起头处,以确保正确的绑定。
(2)把所有的inline function,不管大小都放在class声明之外。
因为"一个inline的函数实体,在整个class声明中未被完全看见之前,是不会被评估求值(evaluated)的。"
2.
typedef int length;
class Point3d
{
public:
void mumble(length val) { _val=val ; }
length mumble() { return _val; }
private:
typedef float length;
length _val;
};
//解释这个class中得length;
三.Data Member的布局(Date Member Layout)
1.
class Point3d
{
private:
float x;
static List<Point3d*> *freeLis;
float y;
static const int chunkSize =250;
float z;
}
问题:解释这个class object的布局(排列顺序)
- 读书日记2012/2/8
- 读书每日记8-2
- 读书日记
- 读书日记--C++ 程序设计语言(2)
- 读书日记2012/2/09——c++对象模型之函数语意学
- Computer System-读书日记
- 【读书】死神逃学日记
- 内测------------读书日记
- 读书日记2012/2/11——类设计者的核查表(一个类中应该具有的东西)
- 读书日记2012/2/12——C++对象的构造与析构(编译器做的那些事)
- POINTERS ON C 读书日记
- 读书日记--C++程序设计语言(1)
- 读书日记之《一个程序员的奋斗史》
- JAVA编程思想4读书日记(1)
- C陷阱与缺陷读书日记
- 2016/12/29之读书日记
- 日记2012-8-8
- 日记2012-8-9
- Navicat Premium 数据库 管理工具
- 治疗鼻炎非常有效的方法——终于找到了
- linux下的C语言开发(线程互斥)
- WAP教程(10):WML参考手册、WML实例和WML DTD
- cocos2d-x初探学习笔记(22)--动画类
- 读书日记2012/2/8
- C#基础概念
- 贝叶斯算法(bayesian)介绍
- .Net下的线程同步:Part 5 of N--(Interlocked && Volatile...)
- 贝叶斯算法会是破解“App刷票”的良方
- POJ 2070 Filling Out the Team(我的水题之路——double比较)
- XHTML MP教程
- jdk 和 tomcat 安装
- 在SpringSide 3 中使用多个数据库的方法