博客
关于我
C/C++编程笔记:详细讲解丨C++中的构造方法
阅读量:82 次
发布时间:2019-02-25

本文共 2290 字,大约阅读时间需要 7 分钟。

什么是构造函数?

构造函数是类的成员函数,用于初始化类的对象。在C ++中,创建对象(类的实例)时会自动调用Constructor。它是该类的特殊成员函数。

构造函数与普通成员函数有何不同?

构造函数与普通函数在以下方面有所不同: 

构造函数与类本身具有相同的名称

构造函数没有返回类型

创建对象时会自动调用构造函数。

如果不指定构造函数,则C ++编译器会为我们生成一个默认构造函数(不带参数,并且具有空主体)。

让我们通过一个真实的例子来了解C ++中构造函数的类型:

假设您去商店买了一个记号笔。当您想购买标记笔时,有哪些选择?第一个你去商店说要给我一个记号笔。因此,只说给我一个标记就意味着您没有设置哪个品牌名称和哪种颜色,也没有提及任何事情,只是说您想要一个标记。因此,当我们说我只想要一个标记笔时,无论市场上还是他的商店中经常出售的标记笔,他都将简单地交出。这就是默认的构造函数!第二种方法是您去商店说我要一个标记为红色和XYZ品牌的标记。所以您提到这件事,他会给您这个标记。因此,在这种情况下,您已经给出了参数。这就是参数化的构造函数!然后是第三个,您去商店说我要这样的记号笔(您手上的记号笔)。因此,店主将看到该标记。好的,他会为您提供一个新标记。因此,复制该标记。这就是复制构造函数!

构造函数的类型

默认构造函数是不带任何参数的构造函数。它没有参数。

#include 
using namespace std;class construct{public:int a, b;// Default Constructorconstruct(){a = 10;b = 20;}};int main(){construct c;cout << "a: " << c.a << endl<< "b: " << c.b;return 1;}

输出: 

a: 10

b: 20

 

注意:即使我们没有显式定义任何构造函数,编译器也会自动隐式提供默认的构造函数。

2.参数化的构造函数:可以将参数传递给构造函数。通常,这些参数有助于在创建对象时初始化对象。要创建参数化的构造函数,只需像向其他函数一样添加参数即可。定义构造函数的主体时,请使用参数初始化对象。 

#include 
using namespace std;class Point{private:int x, y;public:// Parameterized ConstructorPoint(int x1, int y1){x = x1;y = y1;}int getX(){return x;}int getY(){return y;}};int main(){// Constructor calledPoint p1(10, 15);// Access values assigned by constructorcout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY();return 0;}

输出: 

p1.x = 10, p1.y = 15

 

当在参数化构造函数中声明对象时,必须将初始值作为参数传递给构造函数。对象声明的常规方法可能不起作用。构造函数可以显式或隐式调用。

Example e = Example(0, 50); //显式调用

Example e(0, 50);        //隐式调用

参数化构造函数的用途: 

创建对象时,使用它来初始化具有不同值的不同对象的各种数据元素。

它用于重载构造函数。

一个类中可以有多个构造函数吗?

       是的,这称为。

3.复制构造函数:复制构造函数是一个成员函数,它使用同一类的另一个对象初始化一个对象。

每当我们为一个类定义一个或多个非默认构造函数(带有参数)时,也应显式定义一个默认构造函数(不带参数),因为在这种情况下编译器将不提供默认构造函数。但是,没有必要,但是始终定义默认构造函数被认为是最佳实践。 

#include "iostream"using namespace std;class point{private:double x, y;public:// Non-default Constructor &// default Constructorpoint (double px, double py){x = px, y = py;}};int main(void){// Define an array of size// 10 & of type point// This line will cause errorpoint a[10];// Remove above line and program// will compile without errorpoint b = point(5, 6);}

输出:Error: point (double px, double py): expects 2 arguments, 0 provided

以上就是今天的全部内容了。每日分享小知识,希望对你有帮助~

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

C语言C++编程学习交流圈子,QQ群:765803539】微信公众号:C语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习视频分享:

 

转载地址:http://ves.baihongyu.com/

你可能感兴趣的文章
nginx负载均衡的5种策略
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx负载均衡详解
查看>>
Nginx负载均衡(upstream)
查看>>
Vue中删除el-table当前行的方法
查看>>
nginx转发端口时与导致websocket不生效
查看>>
Nginx运维与实战(一)-Nginx不同场景使用方法
查看>>
Nginx运维与实战(二)-Https配置
查看>>
Nginx部署_mysql代理_redis代理_phoenix代理_xxljob代理_websocket代理_Nacos代理_内网穿透代理_多系统转发---记录021_大数据工作笔记0181
查看>>
nginx部署本地项目如何让异地公网访问?服务器端口映射配置!
查看>>
Nginx配置HTTPS服务
查看>>
Nginx配置https的一个误区(导致404错误)
查看>>
Nginx配置Https证书
查看>>
Nginx配置http跳转https
查看>>
Nginx配置ssl实现https
查看>>
nginx配置ssl证书https解决公网ip可以访问但是域名不行的问题
查看>>
Nginx配置TCP代理指南
查看>>
NGINX配置TCP连接双向SSL
查看>>
Nginx配置——不记录指定文件类型日志
查看>>