C++ 在main函数之前可不可以执行一段代码,如果可以,请举例

1.在main函数之前执行一段代码
主要代码:

class A
{
public:
    A() { cout << "A" << i<<endl; }
};
A a;   //全局对象
void main()
{
  cout << "main begin" << endl;
}

运行结果:
请添加图片描述
由上述代码可以得出,主函数之前时可以执行一段代码的。
2.对象数组
主要代码:

class A
{
public:
    A() { cout << "A" << i<<endl; }  //无参构造函数
 //A(int i = 0) { cout << "A" << i<<endl; }  //带默认值的构造函数 
};
void main()
{
    A a[5]; //对象数组 a[0]~a[4]都是对象
}

运行结果:
请添加图片描述
3.构造函数作为类型转换
构造函数除了能构造对象,还能作为类型转换,将一个基本数据类型转换为对象,直接赋值给对象。
但是当前构造函数必须带参数,才能做这个转换。
主要代码:

class A
{
public:
   A(int i = 0) { cout << "A" << i << endl; }
};
void main()
{
  A b = 10;  
  A c=A(10);                                           
}

上述代码中主函数中的A b = 10;本来是声明了一个无名对象A(10),把无名对象给了b。编译器可以自动将A b=A(10); 所以就直接写为A b = 10;优化之后看起来就是直接把一个整型赋给一个对象,就是用整型去给一个对象去构造,要用这个整型去给对象构造, 那么构造函数必须由整型作为参数。
运行结果:
请添加图片描述
explicit的作用:

class A
{
public:
   explicit  A(int i = 0) { cout << "A" << i << endl; }  
};
void main()
{
    A b = 10; //编译错误                                          
}

写了explicit的作用是构造函数不能作为类型转换,只能作为构造函数的作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值