:
但是如果当我们显式自定义了构造函数,系统就不会再生成那个无参的构造函数了,这时我们再在主函数调用无参的构造函数就会失败:
class Date
{
public:
//用户自定义的显式带参构造函数...,再去调用默认构造函数系统就不会生成了:
注意,在上述举例中,我们自定义的带参构造函数仅是为了证实 : 如果用户自定义了构造函数,系统就不会再生成默认构造函数(这个系统生成的构造函数规定是无参的),如果用户自定义的是无参的构造函数...,那么系统同样不会生成构造函数,但是这时在主函数调用无参的构造函数是可以正常运行的,这是因为这时编译器调用的就是用户自定义的无参构造函数,但这样无法明显印证"用户自定义了构造函数,系统就不会再生成无参的默认构造函数...这涉及一项C++的规定,即:按值传递会导致被调用函数使用调用程序中的值的拷贝
即,当我们给函数传值调用时,实际上是将原变量拷贝了一份给形参使用:
而对于C++中的自定义类型...,虽然仅仅只减少了一次拷贝构造及析构,但如果我们拷贝构造的对象是一个有几万个数据的动态栈或者其他结构时,小小一次拷贝构造节省的时间就非常可观了:
但还有一点需要注意,不能够将函数内部创建的变量通过引用返回值返回给主函数