首页 > 编程语言 > 详细

《新标准C++程序设计》3.1.1-3.1.3(C++学习笔记5)

时间:2020-02-02 00:49:45      阅读:94      评论:0      收藏:0      [点我收藏+]

构造函数

1、构造函数的概念和作用

(1)概念

构造函数就是一类特殊的成员函数,其名字和类一样,不写返回值类型(void也不可以写),可以有参数,可以重载。

如果定义类时没写构造函数,则编译器生成一个默认的无参的构造函数 ,默认构造函数无参数,不做任何操作。如果定义了构造函数,则编译器不生成默认的无参数的构造函数

注意:

一个类可以有多个构造函数。

对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数 。

(2)作用

对对象进行初始化,如给成员变量赋初值 

(3)为什么需要构造函数

① 构造函数执行必要的初始化工作,有了构造函数,就不 必专门再写初始化函数,也不用担心忘记调用初始化函数。

② 有时对象没被初始化就使用,会导致程序出错

 

2、构造函数在数组中的使用

3、复制构造函数的概念

只有一个参数,即对同类对象的引用。

形如 X::X( X& )或X::X(const X &), 二者选一 ,后者能以常量对象作为参数,适用范围更广一些

如果没有定义复制构造函数,那么编译器生成默认复制构造函数。默认的复制构造函数完成复制功能。

注意:不允许有形如 X::X( X )的构造函数

4、复制构造函数被调用(起作用)的三种情况

①当用一个对象去初始化同类的另一个对象时。

②如果某函数有一个参数是类A 的对象, 那么该函数被调用时,类A的复制构造函数将被调用。

③如果函数的返回值是类A的对象时,则函数返回时, A的复制构造函数被调用

5、常量引用参数的使用

void fun(CMyclass obj_)
{
    cout << "fun" << endl;
}

 

这样的函数,调用时生成形参会引发复制构造函数调用,开销比较大。

所以可以考虑使用 CMyclass & 引用类型作为参数。

如果希望确保实参的值在函数中不应被改变,那么可以加上const 关键字

void fun(const CMyclass &obj)
{
    //函数中任何试图改变obj值的语句都将是变成非法
}

 

《新标准C++程序设计》3.1.1-3.1.3(C++学习笔记5)

原文:https://www.cnblogs.com/cyn522/p/12250689.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!