C++结构体实例和类实例的初始化

 构体例(包括共用体)和类实例的初始化方法完全相同,二者都可以用于次中。不同点是构体(包括共用体)默员为public,而private型的。

 

一、若类和结构体所有数据成public型,可采取如下花括号形式进行初始化。

    注意:

①        论值的个数多少,都必使用花括号定界

②        未指定的数据成员编译器会自初始化认值

③        这种初始化象方式,要求所有数据成须为public

④        这种初始化象方式,要求中不能写任何构造函数

 

struct S {  //class S 效果一样

    int            x;

    unsigned short y;

};

S testS1={100,123};

S testS2={200};//未指定值的数据成员初始化为默认值,这里os2.y=0;

S TestS[4]={ {100,10},

             {200,20},

             {300} };//未指定的初始化认值,os[2].y,os[3].x,os[3].y

 

二、若数据成privateprotected型,或是提供了构造函数,必使用构造函数来行初始化。

 

struct S { //class S可自行试验果相同

    private:

        int x;

    public:

        double y;

        S(void){}

        S(int idemo,double ddemo) {x=idemo;y=ddemo;}

        void show(void) {cout<<x<<''/t''<<y<<endl;}

};

S os1;//构造函数(无参构造函数)

S os2(1000,2.345);

S os3=S(2000,4.567);

S os[4]={S(10,1.234),S(20,2.234)};//未初始化的将用默构造函数。如此没有默构造函数会出

 

重要提示:

①        S os3=S(2000,4.567);句中,因是声明并初始化os3象,所以将S(int,double)构造函数os3行初始化。

②        S os3(2000,4.567); 等价于 S os3=S(2000,4.567);

③        但如果os3存在了,S os3(100,1.234);os3=S(2000,4.567)表示用一个临时对赋值给os3,将operator=,然后系临时产生的象。系=运算是将源象的数据成值复制到目标对象中的数据成中。

 

三、接受一个参数的构造函数允使用赋值句法初始化象。

说明代码如下:

 

#include <iostream>

using namespace std;

class C {

    private:

        int x;

    public:

        C(int idemo) {x=idemo;}

        void show(void) {cout<<x<<endl;}

};

struct S {

    private:

        int x;

    public:

        S(int idemo) {x=idemo;}

        void show(void) {cout<<x<<endl;}

};

int main(int argc, char *argv[]){

    C oc=1000;//不能企加花括号

    oc.show();

    S os=2000;//不能企加花括号

    os.show();

    return EXIT_SUCCESS;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】WIFI-Direct(Wifi直连)、AirPlay、DLAN、Miracast功能介绍

转自&#xff1a;https://www.cnblogs.com/yuanqiangfei/p/11674640.html 不知道大家对无线同屏技术有多少了解&#xff0c;当这种技术普及的时候&#xff0c;我想我们的工作与生活又会方便很多吧&#xff01;下面是目前三种主流同屏技术的介绍&#xff1a; 目前这种将终端信…

[轉]C# 中的委托和事件

轉自:http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.htmlpdf:http://www.tracefact.net/Document/Delegates-and-Events-in-CSharp.pdfC# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛&#xff0c;然而&#xff0c;较好地理解委托和事件…

可以让你少奋斗十年的工作经验

这个文章我看后&#xff0c;感触很深&#xff0c;写的很实际&#xff0c;也是我们很值得学习的&#xff0c;但是关键是我们要做到&#xff0c;很不容易啊&#xff0c;如果能都做到&#xff0c;那你就是一个牛人&#xff0c;我现在是没有都做到&#xff0c;但是我想努力去做到。…

【转】CT的FOV是什么含义

CT的FOV是什么含义 - &#xff1a; 视场,也可以说扫描范围24mm 在光学中FOV是什么意思 - &#xff1a; 视场角(FOV): 一个光学系统所能成像的角度范围. 角度越大, 则这个光学系统所能成像的范围越宽, 反之则越窄. 在实际产品当中, 又有光学FOV和机械FOV之分, 光学FOV是指SENSO…

MyEclipse 快捷键

Ctrl1 快速修复(最经典的快捷键,就不用多说了)CtrlD: 删除当前行CtrlAlt↓ 复制当前行到下一行(复制增加)CtrlAlt↑ 复制当前行到上一行(复制增加)Alt↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt↑ 当前行和上面一行交互位置(同上)Alt← 前一个编辑的页…

中国的程序员为什么这么辛苦?

做IT已经十年了。十年了&#xff0c;苦吃了不少&#xff0c;经验也有些。现在却越来越讨厌做开发了&#xff0c;越来越不想做IT。大学时曾经的梦想早已灰飞烟灭。现在回头想想&#xff0c;真是入错了行。恰同学少年那会儿&#xff0c;正是IT在中国兴起不久&#xff0c;满怀激情…

【转】解决MeasureString 不准确的问题

转自&#xff1a;https://www.cnblogs.com/MRRAOBX/articles/7473803.html 我在将字符串(含中文)Draw到一幅图片上时发现不准这个问题的。 比如一幅图片的宽是400pixel,Graphics对象g的GraphicUnit是Pixel&#xff0c;我要画到图上的字符串是str,我用g.MeasureString(str.Sub…

JS的手写TRIM函数

JS的手写TRIM函数 转载于:https://www.cnblogs.com/vibratea/archive/2009/07/24/1530109.html

专家观点:你必须了解的嵌入式Linux特性

如今&#xff0c;Linux正广泛应用于各种 嵌入式设备 的开发中&#xff0c;如数字电视、视讯转换盒、DVR播放器、xDSL/有线/PON调制解调器、家用路由器和 网络 网关。它尤其适合具有先进网络功能、大量设备驱动程序的数字家庭和家庭网络。除了嵌入式设备&#xff0c;Linux还支持…

【转】小谈PNG转SVG的方法 在线转换网站与illustrator

转自&#xff1a;https://www.aspirantzhang.com/network/png_to_svg.html 本文主要探讨JPG/PNG转SVG矢量格式并支持FILL的方法&#xff0c;介绍在线转换网站和通过illustator转换的经验。 应该说&#xff0c;国内网站很少用到SVG格式&#xff0c;在此之前我只是听过&#xf…

浅聊在美找工作以及工作之后的感受

此贴并不是炫耀我在美帝工作如何如何&#xff0c;而是仅仅想把这几个月的生活记录下来。在国内读完大学&#xff0c;不想找工作&#xff0c;又不想读国内的研究生&#xff0c;所以跟随大流&#xff0c;来到美帝读master。 在一个算不错的学校读完之后&#xff0c;来到加州硅谷找…

【转】最为详尽的WPF类继承关系*!

转自&#xff1a;最为详尽的WPF类继承关系 - 挑战 - 博客园

C/C++中“空语句”的说明

最近我的同事和一些网友都说C/C中“空语句”&#xff08;就是单独一个分号的语句&#xff09;具有延时的作用&#xff0c;可以用来写延时代码。其实这是一种错误的理解。 首先&#xff0c;有人认为空语句经编译后&#xff0c;生成汇编代码是“NOP”指令,NOP指令是空操作指令&am…

.netframework3.5 中TimeZoneInfo 类的使用

.net famework3.5中新增加了一个关于时区的静态类&#xff0c;可以使得我们方便的操作与时区相关的信息 下面的内容是摘自MSDN的信息&#xff0c;注意&#xff1a;这个类是Beta2中的类&#xff0c;至于Release后是否改变还不知道。由于电脑中没有安装英文正式版的MSDN,所以只能…

【转】Ubuntu16.04安装 Matlab2018a详细教程

转自&#xff1a;【Ubuntu】安装 Matlab2018a详细教程_My Blogs-CSDN博客_matlab2018a安装教程 Matlab2018a安装包下载&#xff1a; 链接: 百度网盘 请输入提取码 提取码: 3c75 一. 安装前的准备工作 1. 将下载好的文件R2018a_glnxa64_dvd1.iso, R2018a_glnxa64_dvd2.iso, …

Hive-Based Registry使用

对于Hive干什么用这里就不多介绍了&#xff0c;根据文档的介绍&#xff0c;Hive形式的注册表分为&#xff1a;Boot hive,System hv和User hive三种。Boot hive就是指那部分在Boot过程中需要使用到的注册表信息&#xff0c;这部分是实在没办法放在System hive中了&#xff0c;所…

【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

转自&#xff1a;matlab与C/C混合编程——在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 dateversioncomments2019/9/9V0.1Init2019/9/27V0.2添加报错信息写入log的实现文章目录 MATLAB生成Dll文件调用 生成dll文件调用dll文件MATLAB生成.so文件…

WinCE中的RAM-Based Registry与HIVE-Based Registry

WinCE支持两种类型注册表&#xff1a;RAM-BasedHIVE-Based&#xff0c;默认使RAM-Based注册表。 1.RAM-Based注册表 RAM-Based注册表所有注册表数据存储象存储(object store)&#xff0c;就存放RAM里面。般有电池备份RAM系统面&#xff0c;就说&#xff0c;当系统掉电以&#…

验证日期时间的正则表达式

可以不要秒数的: ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][123…

【转】Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现

转自&#xff1a;Linux下c调用自己编写的matlab函数&#xff1a;通过mcc动态链接库.so实现_Jaster_wisdom的专栏-CSDN博客 之前在这里和这里调用了matlab自带的一些函数&#xff0c;是通过matlab引擎来实现的。那里调用的是matlab自带的函数&#xff0c;那么如果想调用自己写的…