c++中struct构造函数
构造函数,说白了,就是初始化。
具体的打法是这个样子的:
struct node{//构造函数node()//形参表{//内容}
};
例子:
struct node{node(int c){x=c;y=z=0;}int x,y,z;
};
当然,他既然作为一个函数,那么在里面自然能够塞一些其他东西,比如说跑个SPFA呀、弄个Hello World
呀,都是没有什么问题的。
但是假如像上面一样写的话,严格来说这不是初始化,而是赋值,假如要做到初始化的话,可以打成下面这种形式:
struct node{node(int c):x(0),y(c){}//注意这对象征性地大括号不能丢int x,y;
};
下面来看一个程序,找找错误在哪里
#include <cstdio>struct node{node(int c):x(c){}int x;
};int main()
{node a;printf("%d",a.x);
}
答案:node a;
这就是struct的一个特性了,假如有了构造函数,那么定义的时候,就必须给构造函数提供参数。因为构造函数的触发条件是:定义。
没错,一定义就会触发。为什么呢?可以参考一下变量的初始化,如果有了构造函数,那么就相当于告诉了系统这个东西要如何初始化,那么系统在对它初始化的时候,就会调用形参表里面的东西,但如果你不给它,就出问题了。
所以,上面的程序的正确打法是这样的:
#include <cstdio>struct node{node(int c):x(c){}int x;
};int main()
{node a(5);printf("%d",a.x);
}
还有一点需要注意,假如形参表里面没有参数,那么在定义的时候,就不需要加括号了,假如加了括号,而括号里面没有东西的话,那么这条语句的意思就是声明一个返回值为node类型的函数了。(总之别作死就是了)
例子:
#include <cstdio>struct node{node():x(1){}int x;
};int main()
{node a;printf("%d",a.x);
}
然后,一个结构体也是可以有多个构造函数的,灵活运用会很方便,但是要求每个构造函数内的形参表不能一样,例:
#include <cstdio>struct node{int x;node(int z):x(z){}node():x(1){}
};int main()
{node a;node b(5);printf("%d %d\n",a.x,b.x);
}
可以得到如下输出:
c++中struct构造函数相关推荐
- C#中struct和class的使用区别是什么?
class是引用类型,struct是值类型 引用类型在堆上,值类型是内联的. 值类型有全部的值的内容,而引用类型只有一个地址. 值类型总是有一个值,而引用类型指针可以为空. 为了优化减少体积 需要传递 ...
- C++之struct构造函数(2010-10-19 15:04:47)
C++之struct构造函数 (2010-10-19 15:04:47) 转载 标签: cpp struct 构造函数 校园 分类: C/C_PlusPlus 在网络协议.通信控制.嵌入式系统的C/C ...
- C与C++中struct及C++中struct与class的区别
C++中struct与class的区别 struct class 备注 成员函数 能 能 均有构造函数及析构函数 继承性 能 能 多态性 能 能 均有虚函数 默认成员属性 public private ...
- C++中Struct和Class的区别
Struct和Class的区别 今天这篇博文主要讲解在C++中关键字struct和class的区别.这篇博文,将会系统的将这两个关键字的不同面进行详细的讲解. 从语法上来讲,class和struct做 ...
- C#中struct和class的区别详解
本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建 ...
- C++之struct构造函数
C++之struct构造函数 在网络协议.通信控制.嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体. 下面看看 ...
- 详解C++中的构造函数
c++中的构造函数 一.构造函数作用 二.构造函数的特性 总结 一.构造函数作用 构造函数是一个特殊的成员函数,名字与类名相同,创建类对象时由编译器自动调用,以保证每个数据成员都有一个合适的初始值,并 ...
- php中的构造函数和析构函数,php 中构造函数和析构函数
构造函数: 在对象实例化时被调用,一个类中只能有一个构造函数,在类中起初始化的作用. 析构函数: 在对象结束时被自动调用. 话不多说,用一段代码来说明两者的区别: //定义一个类 class Pers ...
- getvalue函数怎么使用_Java中的构造函数——通过示例学习Java编程(14)
作者:CHAITANYA SINGH 来源:通过示例学习Java编程(14):Java中的构造函数-方家话题 构造函数是用来初始化新创建的对象的代码块.构造函数类似于java中的实例方法(Instan ...
- golang中struct字段
golang中struct字段名首字母必须大写,不然json无法解析 golang中struct字段后面json字段要小写或小写加下划线 golang中首字母大写表示共有
最新文章
- 137 Single Number II 数组中除了一个数外,其他的数都出现了三次,找出这个只出现一次的数...
- python install pip 区别_python conda、pip区别,python 下 faiss 安装
- 机器学习实战3-sklearn使用下载MNIST数据集进行分类项目
- 灵活控制 Hibernate 的日志或 SQL 输出,以便于诊断
- mysql5.7.12安装_mysql 5.7.12 winx64手动安装教程
- RS232与RS485协议原理及应用
- linux打包解压包(tar.gz )
- 计算机组成原理:MIPS
- ecshop 框架 简单分析
- [转]移动App测试中的最佳做法
- 用Python写三级菜单的三个版本
- C语言:while后接分号“;”与不接分号“;”的区别
- PHP大数据量(大于50万)导出到Excel解决方案
- 区块链-拜占庭将军问题介绍
- Android混淆技术综述
- 【Linux】修改文件或文件夹权限的命令
- 前端汉字encode_前端常用的几种加密与解密
- 第1关:小球自由落体运动-------C语言程序设计技术(循环结构程序设计1)
- 了解工业物联网吗?工业物联网感知层、现场管理层、网络层介绍
- vue 单一页面_带有vue的单一Flash消息
热门文章
- 在虚拟机中安装Neokylin操作系统
- android 修改ip的scope的作用,Android Netd分析
- python设置主题背景
- 深度学习框架:动态图 vs 静态图
- V Rising 服务器搭建
- uva 10247 - Complete Tree Labeling(dp)
- ROS ros::NodeHandle nh(“~“)
- redis通过key模糊搜索_Redis中关于Key的模糊查找
- matlab教程 导入数据,MATLAB数据导入
- oracle取字段第三位字符,oracle字符串根据分隔符号获取第几个元素