#include<iostream>
using namespace std;
#include<string>
class Person
{
public:
Person()
{
cout << "无参构造调用" << endl;
}
Person(int age)
{
m_Age = age;
cout << "含参构造调用" << endl;
}
Person(const Person& p)
{
m_Age = p.m_Age;
cout << "拷贝构造调用" << endl;
}
~Person()
{
cout << "析构函数调用" << endl;
}
int m_Age;
};
void test01()
{
Person p1(20); //调用无参就不加括号,否则编译器认为这是一个函数声明
Person p2(p1);
cout << "p2的年龄为:" << p2.m_Age << endl;
}
void doWork(Person p) //值传递创建副本
{
p.m_Age = 1000;
}
void test02()
{
Person p;
p.m_Age = 10;
doWork(p);
cout << "p的年龄为:" << p.m_Age << endl; //打印本体地址
}
Person doWork2()
{
Person p1;
cout << "p1的地址" << (int*)&p1 << endl;
return p1; //返回副本
}
void test03()
{
Person p=doWork2();
cout << "p的地址" << (int*)&p << endl; //打印的副本地址
}
int main()
{
//test01();
//test02();
test03();
}
笔记:构造函数调用规则 p107
于 2023-02-01 16:29:48 首次发布
该文展示了C++中不同类型的构造函数的使用,包括无参构造、含参构造和拷贝构造。同时,通过示例解释了对象在值传递和返回时的副本创建,以及析构函数的工作原理。
摘要由CSDN通过智能技术生成