栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 构造函数的分类及调用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 构造函数的分类及调用

前言

下面主要讲解c++类 构造函数的两种方式和三种调用方式。

一、两种构造方式

1.有参构造
2.无参构造(如果由系统提供也叫做默认构造).

二、对象的构造 1.无参构造

代码如下(示例):

class Person
{
public:
	Person()
	{
		name = "张三";
		age = 18;
	}
	string name;
	int age;
};

这里我们构造一个人时没有传入他的年龄和名字,我们的方法将其默认设置为“张三”和18;

2.有参构造

有参构造又分为传参构造和拷贝构造。

传参构造

传参构造:

Person(string name, int age)
	{
		this->age = age;
		this->name = name;
	}
	string name;
	int age;

通过这种方式我们就可以构造一个我们想要创建的Person对象。
年龄和名字由我们自己初始化。

拷贝构造

拷贝构造是指将一个已有的对象的成员赋值给我们将要创建的对象。

Person(const Person& P)
	{
		this->age = P.age;
		this->name = P.name;
	}
	string name;
	int age;

这里我们是传了一个Person的引用P过来对新构造的对象赋值。
P是我们已经构造好的对象。


三种函数的调用方式 括号法:

下面就是分别用三种构造方法的括号法构造了一位对象。

    Person P1;
	Person P2("库里", 34);
	Person P3(P2);

需注意:无参构造(默认构造)不需要结尾的空括号。原因是编译器会将其看做一个函数的申明而并非一个对象。

显式法

显式法相对比较好理解,
下面就是分别用三种构造方法的显示法构造了一位对象。

    Person P1;
	Person P2 = Person("库里", 34);
	Person P3 = Person(P2);

这里需注意 在第二行的 Person P2 = Person(“库里”, 34); 中的Person(“库里”, 34) 在代码运行时构造了一个匿名对象,在将其拷贝给P2,在该行代码结束以后匿名对象被销毁。
还有不可对匿名对象做拷贝构造,例如

    Person P1;
	Person P2 = Person("库里", 34);
	Person P3 = Person(P2);
	Person(P3);

这里我们对匿名对象进行P3的拷贝构造,编译器报错 : P3的重定义 意思就是重新申明P3。

隐式转换法

下面就是分别用三种构造方法的隐式转换法构造了一位对象。

    Person P1;
	Person P2 = { "库里", 34 };
	Person P3 = P2;
小结

这就是有关于c++ 类 基本的 构造函数的两种方式和三种调用方式。
另附:
这是本c++萌新的第一篇文章,如有错误或纰漏请各位大佬不吝赐教。
谢谢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号