C++_pen_类

类的成员函数

  • 构造函数
  • 析构函数
  • 普通成员函数

构造函数与析构函数

#include 
class STU{
public:
    STU(){
        printf("STU\n");
    }

    STU(int id){
        printf("STU(int id)\n");
    }

    ~STU(){
        printf("STU Bye!!!\n");
    }
};

int main(int argc, char const *argv[])
{
    STU a;//调用无参构造函数
    STU b(5);//显调用
    STU c = 10;//隐式调用
    STU d = c;//调用拷贝构造函数
    STU *p = new STU(1000);//堆中申请
    return 0;
}

深浅拷贝问题(快捷方式与复制)

浅拷贝

#include 
class STU{
public:
    STU(){
        printf("STU\n");
        p = new char[10];
    }

    ~STU(){
        printf("STU Bye!!!\n");
        delete [] p;
    }

private:
    char *p;
};

int main(int argc, char const *argv[])
{
    STU a;//调用无参构造函数
    STU b = a;
    return 0;
}

C++_pen_类_第1张图片

深拷贝

#include 
#include 
class STU{
public:
    STU(){
        printf("STU\n");
        p = new char[10];
        strcpy(p, "hello!!!");
    }
    STU(const STU &a){
        //拷贝构造函数
        printf("const STU &a\n");
        p = new char[10];
        strcpy(p, a.p);//拷贝
    }
    ~STU(){
        printf("STU Bye!!!\n");
        delete [] p;
    }

private:
    char *p;
};

int main(int argc, char const *argv[])
{
    STU a;//调用无参构造函数
    STU b = a;
    return 0;
}

你可能感兴趣的:(c++,c++,开发语言)