云计算百科
云计算领域专业知识百科平台

C++c6-类和对象-对象特征-函数的分类以及调用

个人理解:

括号法:值传递

显示法:常规赋值

隐式转换法:简洁版

#include<iostream>
#include<string>
using namespace std;

//1构造函数的分类以及调用
//分类
//按照参数分类无参构造(默认构造) 有参构造
//按照类型分类普通构造拷贝构造
class Person
{
public:
//构造函数
Person()
{
cout << "Person 无参构造函数的调用" << endl;
}
Person(int a)
{
age = a;
cout << "Person 有参构造函数的调用" << endl;
}

//拷贝构造函数(其实就是复制一份)
Person(const Person &p)//const锁死,避免变动
{
//将传入的人身上所有属性,拷贝到我身上
cout << "Person 拷贝构造函数调用" << endl;
age = p.age;
}

~Person()
{
cout << "Person 的析构函数调用" << endl;
}
int age;

};

//调用
void test01()
{
//1、括号法常用
//Person p;//默认构造函数调用
//Person p2(10);//有参构造函数
//Person p3(p2);//拷贝构造函数

/*注意事项
调用默认构造函数时候,不要加()
因为下面这行代码,编译器会认为是一个函数的声明,不会认为在创建对象*/
//Person p1();

//cout << "P2的年龄为:" << p2.age << endl;
//cout << "P3的年龄为:" << p3.age << endl;

//2、显示法
//Person p1;
//Person p2 = Person(10);//有参构造
//Person p3 = Person(p2);//拷贝构造

//Person(10);//匿名对象特点:当前行执行结束后,系统会立即回收掉匿名对象
//cout << "aaaaa" << endl;

//注意事项2
//不要利用拷贝构造函数 初始化匿名对象 编译器会认为 Persin(p3); 对象声明
//Person(p3);

//3、隐式转换法
Person p4 = 10;//相当于 写了 Person p4 =Person(10); 有参构造
Person p5 = p4;//拷贝构造
}

int main()
{
test01();

system("pause");
return 0;
}

赞(0)
未经允许不得转载:网硕互联帮助中心 » C++c6-类和对象-对象特征-函数的分类以及调用
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!