C++的"五朵金花"

C++的五朵金花


实习结束了,又返回了大学,私认为我的c++水平虽然算不上登堂入室,也算不上熟练的c++程序员,养活自己也可以了,但学校系部仍然把C++这门选修课给我安排成了 必选选修,但这也算是重新梳理、重新总结(写博客)的机会。
所以,作为梳理c++的第一篇blog,应该着重于整体梳理c++的重点知识,so,这篇文章的主要内容解释 五朵金花,也就是c++的 构造函数析构函数拷贝构造拷贝赋值以及 移动构造和移动赋值

构造函数

构造函数时一个对象创建时第一个调用的函数,但不是第一条执行的语句。如果你键入以下代码,应该(肯定)可以看到下列结果

class A{
public:
	A(){
		std::cout<<"in A constructor"<<std::endl;
	}
};

auto main()-> int{
	A a;
	std::cout<<"in Main" <<std::endl;
	std::cin.get();
}

结果

>>in A constructor
>>in Main

这就代表了A对象的构造函数被默认调用了。
小技巧

如果你习惯了使用java,你可能会使用这种方式创建一个无参数的对象,

 A a()

但请注意,这种方式在c++中被解释为函数声明,意思是:有个函数,他的名字为a,没有参数,返回值为A类型对象。

析构函数

与构造函数相对应,析构函数被在对象被释放是默认调用。
对象的释放时机有:

  1. 作用域结束
    类似于if 、 for 、while 或者只是一个{}而已
class A{
public:
	A(){
		std::cout<<"in A constructor"<<std::endl;
	}
	~A(){
		std::cout<<"in A destructor"<<std::endl;
	}
};

auto main()-> int{
	{
		A a;
	}
	std::cin.get();
}

结果应该为

>> in A constructor
>> in A destructor
  1. 函数结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值