美文网首页
C++中的构造函数

C++中的构造函数

作者: 潘雪雯 | 来源:发表于2020-05-14 21:41 被阅读0次

C++中构造函数有三类

  • 无参构造函数
Test2() //无参数的构造函数 
        {
            m_a = 0;
            m_b = 0;
            cout<<"无参构造函数"<<endl;
        }
  • 有参构造函数
  1. 代码形式
Test2(int a)
        {
            m_a =a;
            m_b = 0;
            cout<<"有参构造函数1"<<endl;
        }
        Test2(int a,int b) //无参数的构造函数 
        {
            m_a = a;
            m_b = b;
            cout<<"有参构造函数2"<<endl;
        }
  1. 调用有参构造函数的三种方式:
    2.1) 括号法
Test2 t1(1,2);

2.2) 等号法

Test2 t2 = (3,4);

2.3) 直接调用构造函数或者程序员手工调用产生一个对象

Test2 t3 = 5;
  • 赋值构造函数
  1. 代码
//赋值构造函数 copy构造函数 
        Test2(const Test2& obj) //无参数的构造函数 
        {
            cout<<"我也是构造函数"<<endl;
        }
  1. 调用拷贝构造函数的方法:
    2.1) 定义变量并初始化括号法
Test2 t6(t1);

2.2) 定义变量并初始化,初始化法

Test2 t5 = t1;

2.3) 匿名对象初始化另外一个同类型的对象,直接把匿名对象转成t6,即匿名变有名不会被析构掉

Test2 t6 = Test2();

2.4) 匿名对象赋值给另外一个同类型的对象,然后匿名对象析构

Test2 t2(1,2);
t2 = Test2();

深拷贝和浅拷贝

浅拷贝:两个指针变量指向同一块内存空间.当析构函数把obj2的内存空间析构之后,obj1就变成野指针。

//构造函数
Name(const char *myp)
{
    m_len = strlen(myp); 
    m_p = (char *)malloc(m_len +1);
    strcpy(m_p,myp);
}
//调用构造函数
Name obj2 = obj1; 

深拷贝:自己写拷贝构造函数

Name(const Name& obj1)
{
    m_len = obj1.m_len;
    m_p = (char *)malloc(m_len +1);
    strcpy(m_p,obj1.m_p);
}
image.png
  • 作用域解析运算符
    在类声明和类方法之外使用成员函数时,使用作用域解析运算符(::)来标识函数所属的类;
    例如:update()成员函数的函数头如下:
void Stock::update(double price)

这种表示法意味着定义的update()函数是Stock类的成员。这不仅将update()标识为成员函数,还意味着可以将另一个类的成员函数也命名为update(),因此,作用域解析运算符确定方法定义对应类的身份。

  1. 声明的私有成员只能通过成员函数进行访问。
  2. 为了避免参数名与类成员相同,则在数据成员名中使用m_前缀或者在成员名中使用后缀_
  3. 构造函数用来创建对象,而不是通过对象来调用

相关文章

  • C++ 构造过程

    构造函数 C++中每个类必须有一个构造函数,如果用户没有自行编写构造函数,则C++会自动提供一个无参数的构造函数,...

  • c++复制构造函数

    基本概念 复制构造函数(Copy constructor)是c++中的一个特殊构造函数,也称拷贝构造函数,它只有一...

  • windows逆向3

    VC 程序内存和编译的一些特征C++ 构造函数C++ 成员函数C++ 析构函数C++ 全局对象的构造C++ 全局对...

  • [字符串] 自己实现一个string类(一)

    C++类一般包括:构造函数,拷贝构造函数,赋值构造函数和析构函数四大函数。 在上面的赋值构造函数中,都是先dele...

  • C++静态构造函数相关概念解析

    C++静态构造函数相关概念解析 如何才能正确的理解C++静态构造函数呢?这一静态函数在实际应用中能对我们起到些什么...

  • C++中的构造函数 & 拷贝构造函数 & 赋值运算符重载

    C++中的构造函数 & 析构函数 什么是构造函数?   一种特殊的方法, 在创建实例的时候初始化对象; 构造函数没...

  • C++中的构造函数

    C++中构造函数有三类 无参构造函数 有参构造函数 代码形式 调用有参构造函数的三种方式:2.1) 括号法 2.2...

  • 简介python中的析构函数与构造函数

    python的构造和析构函数为固定的名字。 构造函数 析构函数 不像c++中那样构造函数和析构函数是类名字。并且在...

  • [初学C++]构造和析构函数

    什么是构造函数定义C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数.C++对类提...

  • C++:面向对象基础

    构造函数 C++中有三种构造函数:默认构造函数,有参构造函数,拷贝构造函数 类对象的初始化 括号法//默认构造函数...

网友评论

      本文标题:C++中的构造函数

      本文链接:https://www.haomeiwen.com/subject/sqwyghtx.html