• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

C++之构造函数

C++构造函数

构造函数

一、构造函数的分类

  按照参数分类:有参和无参(默认)构造函数

Person()

  按照类型分类:默认构造函数和拷贝构造函数

Person(const Person &p)

注意事项:拷贝构造函数不能传匿名的对象作为参数。【这是因为匿名的对象在执行完这一行后,对象就会被释放了】 引用的本质也是使用了指针, 这就意味着指针指向的地址空间被释放了。所以不能使用匿名的对象作为拷贝构造函数的参数。
无参的构造函数的调用不需要加括号,加上括号后容易发生歧义(函数的声明歧义)。如Person p();完全可以认为是函数的声明语法。

二、拷贝构造函数的调用时机

	Person(const Person &p){ // 如果这里不加&符号,赋值的时候就会开辟新的内存,赋值的过程中又会调用默认的拷贝构造,进入了死循环过程
	cout << "拷贝构造函数的调用" <<endl;
	}
	// 拷贝构造函数调用的时机
// 1. 用已经创建好的对象来初始化新的对象
void test01()
{
	Person p1 ;
	p1.m_Age = 10;

	Person p2(p1);
}
// 2.以值传递的方式给函数的参数传值
void doWork(Person p1){  // Person p1 = Person(p)
}
posted @ 2022-08-08 00:02  编织快乐  阅读(120)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3