C++笔记

需要使用初始化成员列表:
 情况一、需要初始化的数据成员是对象的情况(这里包含了继承情况下,通过显示调用父类的构造函数对父类数据成员进行初始化);
    创建类对象时,需要对类的数据成员初始化,如果是类对象必须初始化,有父类也要初始化。
        在分配内存时会调用父类的构造函数 。如果有默认无参构造函数,可以忽略

 情况二、需要初始化const修饰的类成员或初始化引用成员数据;
 情况三、子类初始化父类的私有成员;


被final修饰的类,class ** final,不能被继承


C++中虚析构函数的作用是为了避免内存泄漏,当派生类有指针成员变量的时候使用
class Derive : public Base
Base *pD = new Derive

1 对于全局变量和局部静态变量,如果没有初始化值,那么系统默认赋值为0。所以当这类变量的初始值要求为0,或者不关心初始值时,定义时不需要赋初值,这样可以提高效率。
2 对于局部变量,如果没有赋初值,那么默认为随机值,即什么值都有可能。

什么时候使用引用、什么时候使用指针(指针不用初始化,可以指向不同对象,引用要初始化,只能指向一个固定对象。指针需要额外的空间,引用不用,作为形参还需要实参副本)
一般的原则:
对于使用引用的值而不做修改的函数:

1)如果数据对象很小,如内置数据类型或者小型结构,则按照值传递

void func(int );
2)如果数据对象是数组,则使用指针(唯一的选择),并且指针声明为指向const的指针

void func(const int *,int);//第二个参数为数组长度
3)如果数据对象是较大的结构,则使用const指针或者引用,已提高程序的效率。这样可以节省结构所需的时间和空间

void func(const struc *); 或void func(const struc &);
4)如果数据对象是类对象,则使用const引用(传递类对象参数的标准方式是按照引用传递)
void func(const string &,);

对于修改函数中数据的函数:

1)如果数据是内置数据类型,则使用指针
 -> int,long等普通数据类型
void func(int *);
2)如果数据对象是数组,则只能使用指针
void func(int *,int);//第二个参数为数组长度
3)如果数据对象是结构,则使用引用或者指针
void func(struc *); 或void func(struc &);
4)如果数据是类对象,则使用引用    -> string等对象也算
void func(ostream &);

构造函数带有explicit关键字,不能隐式转换。
隐式转换,构造函数为demo(double a),Demo d = 12.2,转换为Demo d = new Demo(12.2)

纯虚函数是虚函数再加上 = 0;

源文件->预处理(处理#开始的语句,宏&include)->编译(源转为汇编)->目标代码(二进制文件)->链接器->可执行文件
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值