摘要: 书中的第二章,主要讲解了 C++中的构造函数。是不是没有构造函数时,编译器都会合成一个默认的?C++的成员变量是不是和 Java 一样都初始化为0?拷贝构造函数做了哪些工作?成员初始化列表到底有没有必要?默认构造函数 按照 C++ standard 的描述,当没有用户申明的 constructor 时,编译器会默认的生成一个。从概念上可以这么理解,但是合成的构造函数也分 trivial 的和 nontrivial 的。一个 trivial 的构造函数,实际上什么工作也没有做,实际上生没生成,也没有太大的区别。但有一点需要记住,不管是生成的哪种构造,data members 都是不会初始化... 阅读全文
posted @ 2014-03-10 21:40 xien7 阅读(303) 评论(0) 推荐(0) 编辑
摘要: C++加了什么? C++在语法上相对于 C,最重要的是增加了 class 的定义(其它的还有 template 等特性)。C++和 C 语言在编译之后,都是运行在同一套环境上的二进制代码,所以从某个角度来说,C++和 C 语言并无区别,而新增加的特性只是一些语法糖。确实,C++的很多新特性都可以转为 C 语言来实现,但是程序员必须要写大量重复的代码来实现这些功能。比如一个 class,转为 C,就是一个结构体,加一堆处理这个结构体的函数(第一个参数为这个结构体的指针);继承就是在结构体中包含父类的结构体(类似于复合);虚函数就是在结构体中加一个 vfptr(虚函数指针),程序员再自己定义一个. 阅读全文
posted @ 2014-03-09 23:25 xien7 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 本文针对C++里的虚函数,虚继承表现和原理进行一些简单分析,有不对的地方请指出。下面都是以VC2008编译器对这两种机制内部实现为例。虚函数 一下是百度百科对于虚函数的解释:定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数[1]​语法:virtual 函数返回类型 函数名(参数表) {函数体}用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数 函数声明和定义和普通的类成员函数一样,只是在返回值之前加入了关键字“virtual”声明为虚函数。而虚函数是实现多态的重要手段,意思是只有对虚函数的调用才能动态决定调用哪一个函数,这是相对于普.. 阅读全文
posted @ 2013-03-12 12:29 xien7 阅读(18344) 评论(0) 推荐(6) 编辑
摘要: 一下只是个人学习后的理解,可能有很多不对的地方。要学习linux的设备驱动模型,首先必须要知道kobject和kset的概念,下面是kobject在2.6.38的源码中的实现。struct kobject { const char *name; //名称,可能在sysfs中创建对应的目录 struct list_head entry; //标准链表,用于被kset连接起来 struct kobject *parent; //指向父kobject的指针 struct kset *kset; //指向所属的k... 阅读全文
posted @ 2013-02-03 00:13 xien7 阅读(405) 评论(0) 推荐(0) 编辑