[ 来源:http://www.it55.com | 作者: | 时间:2007-09-11 | 收藏 | 推荐 ] 【大 中 小】
最近决心要学c++了,把自己的学习笔记放上来,希望大家监督。今天的学习内容是:struct的作用
sflj http://www.it55.com kg^&fgd
改变默认的属性,使默认的private成为public
不会改变内存结构的布局,使得内存布局起来像C一样。
2. c++中实现多态的方法
通过指针或者引用将子类指针转化为基类的指针
透过虚函数调用子类的函数
通过dynamic 或者 typeid 关键字对指针进行父类向子类的转换
3. c++中一个类的大小如何构成?
类中的非静态数据成员
内存对齐不跟的填补空间
支持多态所需要的指向函数表的指针的大小,以及为支持virtual基类所需要的指针的大小
4. 当编译器需要的时候,他才会创建一个default constructor。这个constructor只会按照编译器的需要进行构建, 不会理会程序员的需要。
带有base class default constructor 的子类,会在其构造函数中都调用父类的缺省构造函数,如果子类有明显的构造函数,子类不会生成缺省的构造函数。
带有虚函数的类的继承体系中,编译器会为每一个构造函数(包括缺省的构造函数)为vptr赋值,令其指向vtbl
虚拟继承同样存在虚拟指针赋值的问题。
带有default constructor member 的类在构造时 ,必须依次(声明次序)调用成员的default constructor http://www.it55.com在线教程
5. 拷贝构造函数发生在:
以其他值作为初值生成新的变量时 : X a = b
函数调用中参数传递时
函数返回中存在类的返回值时。
6. default 拷贝构造函数发生时:
如果类的member有explicit copy constructor 那么就会调用之, 否则bitwise copy
如果类有含有explicit copy constructor的父类时 那么就会调用之, 否则bitwise copy
如果类中virtual function,这样宝贝构造函数不是真正的位拷贝,其必须可以识别子类父类,构造函数表,往函数表中填充子项,然后设置正确的指针。 http://www.it55.com在线教程
(编辑:IT资讯之家 www.it55.com)