c++四种基本的构造函数

    科技2026-08-28  19

    #include<iostream> #include<Windows.h> using namespace std; class Animal{ public: Animal(); //默认的构造函数 //自定义参数构造函数 Animal(int age,int weight,const char *add); Animal(const Animal&); Animal& operator=(const Animal&); ~Animal(); int getweight(); int getage(); char* getaddr(); void setaddr(const char *add); private: int weight; int age; char* addr; }; Animal::Animal() { age = 28; weight = 100; addr = new char[64]; strcpy_s(addr,64,"zoo"); } Animal::Animal(int age, int weight,const char *add) { this->age = age; this->weight = weight; addr = new char[64]; strcpy_s(addr, 64, add); } Animal& Animal::operator=(const Animal &pig ) { if (this == &pig) { return *this; } age = pig.age; weight = pig.weight; addr = new char[64]; strcpy_s(addr, 64, pig.addr); } Animal::Animal(const Animal &pig){ age = pig.age; weight = pig.weight; addr = new char[64]; strcpy_s(addr, 64, pig.addr); } Animal::~Animal() { delete addr; } int Animal::getweight() { return weight; } void Animal::setaddr(const char *add) { addr = new char[64]; strcpy_s(addr,64,add); } int Animal::getage() { return age; } char* Animal::getaddr() { return addr; } int main() { Animal pig; cout << pig.getaddr() << endl; pig.setaddr("NBA"); cout << pig.getaddr() << endl; system("pause"); return 0; }

    Animal(); //默认的构造函数 用法:Amimal pig;

    Animal(int age,int weight,const char *add); //自定义参数函数’ 用法: Amimal pig(16,299,“nba”);

    Animal(const Animal&); //拷贝构造函数 用法 : Amimal tiger(pig); Animal tiger=pig; 注意:如果不定义构造函数,用这两种方法也是调用拷贝函数 但是是浅拷贝 即里面的指针是指向原来的地方 而不是重新分贝一块内存,如果定义过拷贝函数,就可以自己设为分配一块内存空间在指向这块内存空间

    Animal& operator=(const Animal&); //赋值构造函数 用法:Amimal tiger,pig; tiger =pig; 注意:这个函数同拷贝函数

    声明:其实后两个函数就是为了让对象里的指针,重新分配一块内存空间并赋值,再让其指针指向这块区域,就应该是要去定义的最重要原因

    Processed: 0.008, SQL: 10