声明

转载自:https://www.cnblogs.com/wlw-x/p/11566191.html

关于结构体构造函数使用总结

三种结构体初始化方法

1.利用结构体自带的默认构造函数

2.利用带参数的构造函数

3.利用默认无参的构造函数

要点:

在建立结构体数组时,如果只写了带参数的构造函数将会出现数组无法初始化的错误!!!各位同学要牢记呀!

下面是一个比较安全的带构造的结构体示例

struct node{
int data;
string str;
char x;
//注意构造函数最后这里没有分号哦!
node() :x(), str(), data(){} //无参数的构造函数数组初始化时调用
node(int a, string b, char c) :data(a), str(b), x(c){}//有参构造
}N[10];

下面我们分别使用默认构造和有参构造,以及自己手动写的初始化函数进行会结构体赋值

并观察结果

测试代码如下:

#include <iostream>
#include <string>
using namespace std;
struct node{
int data;
string str;
char x;
//自己写的初始化函数
void init(int a, string b, char c){
this->data = a;
this->str = b;
this->x = c;
}
node() :x(), str(), data(){}
node(int a, string b, char c) :x(c), str(b), data(a){}
}N[10];
int main()
{
N[0] = { 1,"hello",'c' };
N[1] = { 2,"c++",'d' }; //无参默认结构体构造函数
N[2].init(3, "java", 'e'); //自定义初始化函数的调用
N[3] = node(4, "python", 'f'); //有参数结构体构造函数
N[4] = { 5,"python3",'p' }; //现在我们开始打印观察是否已经存入
for (int i = 0; i < 5; i++){
cout << N[i].data << " " << N[i].str << " " << N[i].x << endl;
}
system("pause");
return 0;
}

输出结果

1 hello c

2 c++ d

3 java e

4 python f

5 python3 p

发现与预设的一样结果证明三种赋值方法都起了作用,好了就写到这里.

参数的构造函数注意按顺序写就行了

参数的构造函数还能实现一边初始化某一个元素,一边计算另一元素的功能, 如下:


struct line{
double k, b;
int id;
line () {}
line(int x1, int y1, int x2, int y2, int cnt) : id(cnt) {
if(x1 == x2) k = 0, b = max(y1, y2);
else k = (double)(y2-y1)/(x2-x1), b = (double)y1-k*x1;
}
double calc(int x) {
return k*x+b;
}
}tr[MAX<<2];

【转】C++ - 结构体构造函数使用总结的更多相关文章

  1. C++ - 结构体构造函数使用总结

    关于结构体构造函数使用总结 三种结构体初始化方法 1.利用结构体自带的默认构造函数 2.利用带参数的构造函数 3.利用默认无参的构造函数 要点: 在建立结构体数组时,如果只写了带参数的构造函数将会出现 ...

  2. 【2016-08-18】转载:总结C++中几种结构体初始化的方法

    作者:Ac_Von 博客地址:http://www.cnblogs.com/vongang/ 文章地址:http://www.cnblogs.com/vongang/archive/2011/07/3 ...

  3. Swift入门篇-结构体

    前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中 ...

  4. C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)

    前言 这一节主要来了解一下类和结构体之间的异同点.以及针对String和StringBuilder的用法.equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...

  5. C#中的结构体与类的区别

    经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字str ...

  6. C#中的结构体与类的区别 (转载)

    经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字str ...

  7. C#类和结构体的异同点简单总结

    类和结构的异同点?异:  1.关键字不同 一个是class,一个是struct  2.类型不同,一个是引用类型,一个是值类型(一个堆区,一个栈区)        3.成员不同,结构体没有默认的构造函数 ...

  8. STL 结构体 内部函数

    typedef struct Node { int val; string name; bool operator < (const Node &right) const { retur ...

  9. [转]C#中的结构体与类的区别

    C#中的结构体与类的区别   经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字cla ...

随机推荐

  1. C# -- 优先获取电脑C盘之外的磁盘来保存数据

    C# -- 优先获取电脑C盘之外的磁盘来保存数据 1. 优先获取电脑C盘之外的磁盘来保存数据.没有其他盘则使用C盘. public string GetSaveDataDiskPath() { str ...

  2. c# 保留2位小数 整数时无小数

    对数值保存两位小数,有时是整数时,不需要显示两位小数.例如值为:1.32 保留两位,结果是1.32,值为:2,结果有两种显示,2和2.00 /// <summary> /// 金额 /// ...

  3. 快速幂取模&快速乘取模

    快速幂取模 即快速求出(a^b)mod c 的值.由于当a.b的值非常大时直接求a^b可能造成溢出,并且效率低. 思路 原理就是基于\(a*b \% c = ((a \% c)*(b \% c))\% ...

  4. JS Navigator

    JS Navigator window.navigator 对象包含有关访问者浏览器的信息. Window Navigator window.navigator 对象在编写时可不使用 window 这 ...

  5. VUE组件 之 高德地图地址选择

    注:本文基于上一篇文章[ Vue-Cli 3.0 中配置高德地图] ,采用直接引入高德 SDK 的方式来使用高德地图api 一.效果图 二.组件要实现的功能 1. 如果有传入坐标点,则定位到坐标点 2 ...

  6. [20191122]oracel SQL parsing function qcplgte.txt

    [20191122]oracel SQL parsing function qcplgte.txt --//昨天看了链接:https://nenadnoveljic.com/blog/memory-l ...

  7. Tensorflow常用算数操作

    TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测.如果检测 ...

  8. Map随笔:有序的HashMap——LinkedHashMap

    目录 Map随笔:有序的HashMap--LinkedHashMap 一,概述 二,源码结构 三,总结 Map随笔:有序的HashMap--LinkedHashMap 一,概述 ​ LinkedHas ...

  9. [Vue 牛刀小试]:第十三章 - Vue Router 基础使用再探(命名路由、命名视图、路由传参)

    一.前言 在上一章的学习中,我们简单介绍了前端路由的概念,以及如何在 Vue 中通过使用 Vue Router 来实现我们的前端路由.但是在实际使用中,我们经常会遇到路由传参.或者一个页面是由多个组件 ...

  10. [译]Vulkan教程(02)概况

    [译]Vulkan教程(02)概况 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第2篇. This chapter will start off with ...