结构、构造函数

C#中结构和类的默认构造函数 不想看我废话直接看这个链接就行:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/new-operator研究这个的起因还是C#的类的字段可以赋值初始化,而在C++中是不行的(除了const static int(枚举)这种成员变量),原因是类声明时并未分配空间,而后查了一些资料才得知这是C#编译器... 阅读详情

结构与类的最大最大最大区别:
结构是值类型,类是引用类型;
结构是值类型,不能继承,但结构可以实现接口;
是定义结构还是定义类?
1、如果想使用面向对象特性,就定义成类;
2、数据存储非常大,使用类,因为结构是值类型,存储在栈上,而类是引用类型,存储在堆上。

namespace _结构
{
    class Program
    {
        static void Main(string[] args)
        {
            //声明结构的时候可以new也可不new,一般建议new,不new的话得给类型赋初始值
            Student stu=new Student();
            stu.age=100;
            stu.name="sj";
            stu.Email="sj@qq.com";
            stu.SayHi();
            Console.WriteLine(stu.Email);
        }
    }

    //定义一个结构,关键字struct
    struce Student
    {   
        //定义字段
        public string name;
        public int age;
        //定义属性
        public string Email
        {
            get;set;
        }
        //定义方法
        public void SayHi()
        {
            Console.WriteLine("Hi~");
        }
    }
}

运行结果:
Hi~
sj@qq.com

========================================

构造函数:
与类名称具有一样名称的成员函数是构造函数。构造函数不能有返回值,甚至不能有return语句
如果一个类有构造函数,在程序中每个该类类型的对象在使用之前由此构造函数进行初始化

namespace _继承中的构造函数问题
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu=new Student("sj",18,100);
            Console.WriteLine(stu.Name);
            Console.WriteLine(stu.Age);
            Console.WriteLine(stu.Score);
            Console.Readkey();
        }
    }

    //父类
    class Person
    {
        //无参构造函数,如果把这个注释了会报错,因为子类中会默认调用,但如果
        //父类中一个构造函数都不写,也不会报错,因为默认有一个无参构造函数
        //修正错误方法1:在父类中增加一个无参数的构造函数。
        //这是子类的构造函数就可以找到父类中的无参构造函数。
        public Person()
        {
            Console.WriteLine("Person类中的无参构造函数");
        }
        //带参构造函数
        publi Person(string name,int age)
        {
            this.Name=naem;
            this.Age=age;
        }
        public Person(string Name)
        {
            this.Name=name;
            this.Age=0;
        }
        public string Name
        {
            get;set;
        }
        public int Age
        {
            get;set;
        }
    }

    //继承的时候构造函数需要注意:
    //1、继承的时候构造函数不能被继承;
    //2、子类的构造函数会默认去调用父类中的无参数构造函数
    //子类
    class Student:Person
    {
        //构造函数
        //修正方法2:不修改父类,而是在子类的构造函数后面通过冒号base()
        //显示的去调用父类中的某个构造函数。
        public Studnet(string name,int age,double score)
            :base(name,age)//base的作用1:在子类中调用父类的构造函数。
        {
            //this.Name=naem;
            //this.Age=age;
            this.Score=score;
        }
        //属性
        public double Score
        {
            get;set
        }
    }
    //子类
    class Teacher:Person
    {
        //构造函数
        public Teacher(string name,int age,double salary)
            :base(name)
        {
            //this.Name=name;
            this.Age=age;
            this.Salary=salary;
        }
        //属性
        public double Salary
        {
            get;set;
        }
    }
}

=========================================

namespace _06通过this调用自己的构造函数
{
    class Program
    {
        static void Main(string[] args)
        {}
    }

    public class Person
    {
        //构造函数
        publi Person(string naem,int age,string email,double salary)
        {
            this.Name=name;
            this.Age=age;
            this.Email=eamil;
            this.Salary=salary;
        }
        //构造函数
        //this作用1:在当前类的构造函数后台通过:this类调用当前类自己
        //的其他构造函数。base是调用父类中的构造函数
        public Person(string naem)
            :tihs(name,0,null,0)//调用自己类中的构造函数,当你调用这个构造函数的时候,会先去掉用this中的构造函数
        {

        }
        public Person(string naem,int age)
            :this(name,age,null,0)
        {
            //this.Name=name;
            //this.Age=age;
        }
        public Person(string naem,string email)
            :this(name,0,email,null)
        {
            //this.Name=name;
            //this.Email=email;
        }
        //属性
        publi string Name{get;set}
        publi int Age{get;set;}
        publi string Email{get;set;}
        publi double Salary{get;set;}
    }   
}
结构体中的构造函数 #include 阅读详情

相关推荐

瑞芯微RK3576开发实战:固件烧录与内核启动的典型问题解析

本文详细解析了瑞芯微RK3576开发板在固件烧录与内核启动过程中遇到的典型问题及解决方案。从开发工具版本检查、DDR配置调整到内核启动异常的设备树适配和电源管理问题,提供了系统性的调试方法和实用技巧,帮助开发者高效解决RK3576开发中的常见挑战。

weixin_33700350的博客 455

结构类型、结构函数和构造函数

在初学C#的时候,有三个概念可能会容易搞混——结构类型、结构函数、构造函数。          结构类型是由几个数据组成的数据结构,这些数据可能有不同的的类型。结构就是把这些不同类型的数据组合在一起,形成由用户自定义变量类型的数据,以方便用户使用。结构使用struct关键字来定义,语法如下:          struct           {

leayon的专栏 3662

EB tresos配置指南:CAN通信信号收发全流程解析

本文详细解析了使用EB tresos配置工具实现AUTOSAR架构下CAN通信信号收发功能的全流程。从环境准备、COM模块信号定义、PduR路由配置、CanIf硬件抽象到CAN驱动层设置,提供了清晰的步骤指南和关键配置要点,帮助开发者快速打通从应用层到物理层的数据链路,实现可靠的CAN通信。

weixin_29192141的博客 509

结构体构造函数

1.构造函数 (1)只要参数和类型不完全相同,就可以定义任意多个构造函数,以适应不同的初始化场合。 (2)构造函数不需要写返回类型,且函数名与结构体名相同。 (3)结构体内会生成一个默认的构造函数(但不可见,如studentInfo(){}),如下,所以才可以直接定义studentInfo类型的变量而不进行初始化(因为它没有让用户提供任何初始化参数)。 构造函数: struct studentInfo{ int id; char gender; //默认生成的构造函数 studentInfo(int

发现问题,并解决问题,批判性思维 5832

高级Salesforce开发面试题

自定义设置允许您创建自定义数据集,以及为组织、配置文件或特定用户创建和关联自定义数据。自定义元数据类似于自定义设置,但是自定义元数据类型中的记录被视为元数据而不是数据。自定义设置有列表和层次自定义设置两种。自定义元数据中没有此类类型。此外,自定义元数据不支持基于用户配置文件或特定用户的层次结构类型的数据。自定义设置现在不再支持关系字段。但您可以在自定义元数据对象之间创建查找。元数据查询不占用查询sql次数的限制。

weixin_45663522的博客 1242

VS Code 配置 LaTeX 写作环境完全指南

本文详细介绍了如何在 VS Code 中配置 LaTeX 写作环境,涵盖了从安装必备组件到高级功能的全面指南。首先,用户需要安装 LaTeX 发行版(如 TeX Live 或 MiKTeX)和 VS Code 插件(如 LaTeX Workshop)。接着,通过修改 settings.json 和 keybindings.json 文件,用户可以自定义编译、查看快捷键等基础配置。文章还提供了高效写作技巧,如使用代码片段和多文件项目管理,并介绍了高级功能如反向同步、公式预览和参考文献管理。此外,针对常见问题(

weixin_70043030的博客 1984

【C++】结构体构造函数和实例化详解-打包解决你的所有困惑(●‘◡‘●)

构造函数的方式代码参数全初始化参数部分初始化带默认值v,如果传入不同的值v',按传入值v'给变量赋值一种简便的写法。

icecreamTong的博客 1万+

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

weixin_45390670的博客 1869

c++构造函数和结构体构造函数

今天写leetcode,让我对c++的一些知识有了更为深刻的认识。 1.c++中的this c++中的this与js中类似,都是为了给类的实例创建变量和方法用的,使用this来获取实例上的方法和属性。 2.构造函数中的this及初始化 c++构造函数中,加不加this都可以将变量添加到类的实例上。例如: 不使用构造函数对变量进行初始化 #include <iostream> using namespace std; c...

weixin_43098069的博客 3505

SVA学习笔记(1)——property基本语法及巧用define与property

巧用define与property,让代码更加灵活

craftsman2018ship的博客 1574

Android12 适配 usb 触屏

在 Android 系统中,输入设备 IDC(Input Device Configuration)设备描述文件(.idc)是用于配置和定义输入设备行为和属性的文本文件。 该文件通常在`/system/usr/idc/` 或 `/vendor/usr/idc/`,具体位置因芯片厂商SDK而异。一般情况此类文件是预置到系统,开发者 root 权限才能修改这些文件。输入设备 IDC 设备描述文件在 Android 系统中起到了识别、配置、映射和定制输入设备的作用,使得系统能够准确解析和处理各种输入设备的事件,提

weixin_35723192的博客 1234

结构体的构造函数

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> using namespace std; const int maxn=10010; const int N=10; struct bign{ i...

让, 4359

倍福EL6002实现RS232自由口通信,以称重模块RS232数据接收为例

RS-232是美国电子工业联盟制定的串行数据通信接口标准,原始编号全称是EIA-RS-232(简称RS232),它被广泛用于DCE(Data Communication Equipment ) 和 DTE(Data Terminal Equipment) 之间的连接。最早的台式电脑都会保留9针的232接口,用于串口通信,目前基本被USB接口取代。CTS是对请求发送RTS信号的响应,当DCE已经准备好接收数据时,该信号有效(ON),通知DTE可用使用TXD发送数据了。弄完了,再将CTS设置为1,让A发数据。

weixin_41883890的博客 1726

【C++ 结构体的构造函数使用】

使用自定义构造函数就能够单独初始化某些变量,而不需要全部变量必须整体赋值。实例如下# include //使用自定义构造函数 struct student {int id;//自定义构造函数 //可以同时初始化id和gender student(int _id , char _gender) : id(_id) , gender(_gender) {} //也可以单独初始化gender student(char _gender) : gender(_gender) {} };

2d3d图像算法 halcon\opencv\c++\pcl\vtk\coluldcompare工具 程序员 学习者 5457

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

用构造函数来完成结构体的初始化

前言 说到结构体的初始化,人们会自然的想到先定义一个结构体变量,然后对其中的元素逐一赋值,以达到初始化的目的。 但是如果这样做,当结构体内变量很多时并不方便,此处介绍一种使用“构造函数”的方法来进行初始化,供读者学习。 所谓构造函数就是用来初始化结构体的一种函数,它直接定义在结构体中。 构造函数的一个特点是它不需要写返回类型,且函数名与结构体名相同。 例子: struct student { int id; char name; //默认生成的构造函数 student(){} }; “ stude

辉小歌的博客 5089

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

结构体赋值 -- 构造函数

一般来说,定义结构体时会默认生成一个(不可见的)构造函数 struct Node{ int node1; double node2; char node3; Node() {} //默认生成的构造函数 }; 它没有返回值,所以构造函数前没有返回值类型 它没有参数,所以构造函数的小括号内为空 它没有函数体,所以构造函数的花括号内为空 构造函数的函数名与结构体类型名相同,正是有这么一个构造函数存在,用户可以定义Node类型的变量时不初始化 Node one; //对结构体中

haoran的博客 2069

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

浅谈结构体构造函数用法

浅谈结构体构造函数的用法

Azure_stars的博客 2443

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

关于结构体构造函数使用总结 三种结构体初始化方法 1.利用结构体自带的默认构造函数 2.利用带参数的构造函数 3.利用默认无参的构造函数 要点: 在建立结构体数组时,如果只写了带参数的构造函数将会出现数组无法初始化的错误!!!各位同学要牢记呀! 下面是一个比较安全的带构造的结构体示例 struct node{ int data; string str; ...

weixin_30955341的博客 2414

【C++】结构体构造函数

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(): data(), str(), x(){} // 有参数构造函数

恒治学 3216

【C/C++】构造函数初始化结构体

本文为 C/C++ 学习总结。讲解使用构造函数初始化结构体

weixin_44413191的博客 1667

结构体构造函数使用总结

三种结构体初始化方法 1.利用结构体自带的默认构造函数 2.利用带参数的构造函数 3.利用默认无参的构造函数 在建立结构体数组时,如果只写了带参数的构造函数将会出现数组无法初始化的错误!!! 结构体是否有构造函数和析构函数,C里面没有,C++里面有。 C++里根本就没有结构,仅仅为了兼容c才有结构这种东西,实际上除了名字以外,C++的结...

ww的博客 3500

构造函数初始化结构体

构造函数初始化结构体 虽然初始化列表易于使用,但它有两个缺点: 如果有某个成员未被初始化,那么在这种情况下,跟随在该成员后面的成员都不能初始化。 如果结构体包括任何诸如字符串之类的对象,那么在许多编译器上它都将无法运行。 在这些情况下,可以使用构造函数来初始化结构体成员变量,这和初始化类成员变量是相同的。与类构造函数一样,结构体的构造函数必须是与结构体名称相同的公共成员函数,并且没有返回类型。因为...

Athus_c的博客 1515

结构体里创建构造函数

结构体里的构造函数 创建一个结构体而不想用函数对他进行初始化?试试构造函数 #define INIT_SIZE 10 #include<stdio.h> #include<stdlib.h> //malloc在这个文件里 typedef struct Sqlist{ int* list; int length; int size; Sqlist() //构造...

Aruko的博客 1309

结构体构造函数学习

结构体是特殊的 类。 参考链接: 结构体和类的区别_u011555996的博客-优快云博客_结构体和类的区别 看如下代码: #include <iostream> using namespace std; //使用默认构造函数 struct student { int id; char gender; }pig; //能不经初始化就定义变量 int main(){ pig = {23,'F'};//使用该语句必须整体赋值,不能单独赋值 cout <<

weixin_45024226的博客 665
上一篇: .NET学习目录
下一篇: C#面向对象设计模式纵横谈4 Builder生成器模式创建型模式
沈的军
博客等级 码龄11年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值