C++学习第二天—构造函数与析构函数

本文介绍了C++中的构造函数和析构函数。构造函数用于对象初始化,无返回值,可重载,系统自动调用。复制构造函数利用已有对象初始化新对象。析构函数用于对象清除,系统会在对象撤销时自动调用,用于内存清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类的构造函数和析构函数

构造函数在类中声明的一种特殊的成员函数

——与所属类名相同
——无返回值
——创建对象时有系统自动调用
——被声明为公有函数
——由new运算符动态创建对象系统自动调用

具有一般成员函数所有的特性
可以访问类的所有数据成员
可以是内联函数
可以无参 可以带参:定义有参的时候 是可以设置形参默认值的
可以重载:一个类 中构造函数可以有多个 以便针对对象不同的特性进行初始化

1)

#include <instream.h>
class CMyclass
{
    int a,b;
public:
   CMyclass(int x=3,int y=3)
   //设置了默认参数
   {
    a=x;b=y;
   }
   .....
};
//对于带默认参数的构造函数 函数声明写在类的里面 函数实现写在类的外面的时候 一定要把它的**初始值**放在**类的内部**来写

CMyclass c1(2,4);
CMyclass c2(4);
CMyclass c3;
          只有调用构造函数才能完成对象的初始化
    如果用户未定义构造函数 调用西东提供的缺省构造函数
              <类名>::<缺省构造函数名>(){ }
             一个类只有一个缺省的构造函数

[Example] 当调用无参构造函数时
CMyclass c1;//正确
CMyclass c2();//错误
理解:实例化类的对象要调用构造函数 对于错误的那个理解为是对c2函数来进行声明 这个函数不带参 返回类型是CMyclass
所以存在二义性 你可以理解为是构造类的对象 也可以理解为是函数的声明
故为了避免二义性 不要写括号

2)

比较不错的例子

#include <instream.h>
class CMyclass
{
    int a,b;
public:
   CMyclass()
   {
   
   }
   CMyclass(int x=3,int y=3)
   //设置了默认参数
   {
    a=x;b=y;
   }
   .....
};
 //定义类对象
 CMyclass c2(2,4);
 CMyclass c;
 //同样具有二义性 是调用无参构造函数还是调用存在缺省值的构造函数呢?
 //故具有二义性

另外显示调用构造函数注意调用的正确方法(语法要求) 这在析构函数一节写了。
——————————————————————————
复制构造函数:利用已经生成的一个类对象对将要生成的一个类对象进行初始化

int a1=0;
int a2(a1);  //a2=a1 C++特殊语法
CMyclass obj1;
CMyclass obj2(obj1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值