C++心得

1 Const

作用: Const修饰的变量不能被改变。
应用: Const可以修饰变量、函数参数、函数返回值、成员函数、与指针配合、与引用配合。

  • 传递参数或者函数返回值时,如果不是传递或返回指针或者引用,也用不着使用const,因为形参是对实参的拷贝。
  • 修饰指针:
const char* const p;
//第一个const是保持p所指向的内存空间的内容不变,第二个const是指针的指向不变。
  • 修饰引用
Complex& a; 
//其等价于Complex* const a,相当于常指针,而取地址&操作以及*操作是C++编译器自己做了
Const Complex& a;
//在传递引用时,一般需要加上Const,保持传递的变量不变,除非是要对变量进行修改
  • 修饰成员函数this指针
void  OpVar(int a,int b) const //一般写在后边
	{
		this->a = 100;
		this->b = 100;
	}
//此函数为成员函数,默认传递this指针,无法显式的修饰this指针,因此放在花括号之前来修饰this指针,不能让this指针在花括号内被修改。

未完待续…

2 匿名对象

  • 构造函数: 可直接使用构造函数来创建匿名对象
class Test
{
    Test(){}
};
Test();//此处创建的是一个匿名对象,如果不用于初始化对象,那么其生命周期只有这一行

注意:有时候,会想在一个构造函数中调用另一个构造函数,但是这种操作恰好是创建了一个匿名对象,调用是不成功的。

  • **函数返回:**函数返回一个自定义对象时,由于函数结束后,局部变量就要被析构掉,因此创建一个匿名对象用于承接返回的对象。但是要看怎么接。
def build()
{
	Test t();
	return t;
}
Test t1 = build();//此处的匿名对象直接转正,不再调用拷贝构造函数
Test t2();
t2 = build();//此处相当于等号赋值,需要调用拷贝构造函数

未完待续…

3 浅拷贝

  • 默认拷贝构造函数: 若没有定义拷贝构造函数,会调用默认拷贝构造函数,此时如果对象中存在指针,此时实现的是浅拷贝(两个对象的指针成员变量p会指向同一块内存空间),当进行析构的时候就会释放两次,报错。
  • 等号赋值=操作: 直接的等号赋值操作使用的也是浅拷贝,此时就需要重载等号操作符。
Test t1();
Test t2();
t2 = t1;//此处的等号操作

//进行等号操作赋值时,如果对象中有指针,1)要给新对象分配内存空间,并将内容拷贝2)析构时,释放指针,并设置为NULL

未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值