首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在C++中没有"初始化"关键字,就像在Delphi中一样?

在C++中没有"初始化"关键字,是因为C++已经提供了一种更加灵活和安全的方式来初始化变量。在C++中,变量的初始化可以通过以下几种方式来实现:

  1. 在声明变量时直接赋值:int a = 10;
  2. 使用构造函数进行初始化:class MyClass { public: MyClass() : a(10) {} private: int a; };
  3. 使用初始化列表进行初始化:class MyClass { public: MyClass() : a(10) {} private: int a; };
  4. 使用C++11的列表初始化:int a {10};

这些方法都可以实现变量的初始化,而且在C++中,这些方法都是更加安全和推荐的方式。因此,C++中没有"初始化"关键字,而是提供了更加灵活和安全的初始化方式。

在Delphi中,初始化变量需要使用"initialization"关键字,这是因为Delphi是一种面向对象的编程语言,它需要在对象被创建之前进行一些初始化操作。而C++是一种更加通用的编程语言,它支持多种编程范式,包括面向对象编程、泛型编程等。因此,C++需要更加灵活和安全的初始化方式来满足不同的编程需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 的数据结构

和C、C++、JAVA等语言一,序列是从0开始的; 元组存储的对象可能是可变对象。...一旦创建了元组,元组的对象就不能修改了,但对于元组的可变对象,可以原位进行修改; 可以用加号运算符将元组串联起来; 元组乘以一个整数,像列表一,会将几个元组的复制串联起来(对象本身并没有被复制,...in 关键字可以检查列表是否包含某个值。 reverse() 函数用于反向列表中元素。该方法没有返回值,但是会对列表的元素进行原地反向排序。...列表检查是否存在某个值远比字典和集合速度慢,因为 Python 是线性搜索列表的值,但在字典和集合同样的时间内还可以检查其它项(基于哈希表)。...可以像访问列表或元组的元素一,访问、插入或设定字典的元素; 可以用检查列表和元组是否包含某个值的方法,检查字典是否包含某个键; 可以用 del 关键字或 pop 方法(返回值的同时删除键)删除值

3.2K20

C++ struct与union

++中使用结构体需要注意以下几点: (1)C++,结构体是一种真正的数据类型,利用结构定义变量时,不需要像在C带上struct关键字,或先使用typedef struct structname...(2)C++对C的struct进行了扩充,允许struct定义成员函数。...(3)如果struct没有显示定义任何构造函数,那么结构变量可以像在C语言中那样用花括号顺序指明数据成员的值来进行初始化。但是一旦显示定义了任何一个构造函数,就不能用这种方式初始化了。...2.union 共用体(union)是一种特殊的类,从C语言章继承而来,其基本语义没有发生什么变化,只是具有了类的一些特性(允许定义成员函数)。实际的编程实践,使用频率没有struct高。...对于引用变量,引用本质上是一个指着常量,它的值一旦初始化就不允许修改。如果共用体有引用成员,那么共用体对象一创建初始化无法修改,只能作为一个普通的引用使用,这就失去了共用体存在的意义。

62510
  • C++ struct与union

    ++中使用结构体需要注意以下几点: (1)C++,结构体是一种真正的数据类型,利用结构定义变量时,不需要像在C带上struct关键字,或先使用typedef struct structname...(2)C++对C的struct进行了扩充,允许struct定义成员函数。...(3)如果struct没有显示定义任何构造函数,那么结构变量可以像在C语言中那样用花括号顺序指明数据成员的值来进行初始化。但是一旦显示定义了任何一个构造函数,就不能用这种方式初始化了。...实际的编程实践,使用频率没有struct高。与struct相比,最显著的区别是union的数据成员共享同一段内存,以达到节省空间的目的。...对于引用变量,引用本质上是一个指针常量,它的值一旦初始化就不允许修改。如果共用体有引用成员,那么共用体对象一创建初始化无法修改,只能作为一个普通的引用使用,这就失去了共用体存在的意义。

    2.3K30

    恶意代码分析实战六:熊猫烧香病毒样本分析

    正常我们分析一个未知恶意程序的时候,流程都是要先上传杀毒网看看。 用PEID进行查壳,显示未加壳,程序采用Delphi语言开发。 补充下Dephi开发的程序和C++开发的程序的一些区别。...区别: 1.Delphi函数调用时参数的传递不完全用栈,主要用寄存器。 2.而C++程序函数调用前会使用push语句将参数入栈,然后再进行call。...”spoclsv.exe”,之后没有什么可疑的文件操作了,所以我们可以判断,这个恶意百度真正的破坏部分是由”spoclsv.exe”实现的,那么我们接下来就是专门来监控这个进程即可。...因为创建了这些文件之后对注册表的SHOWALL项进行了设置,使得隐藏文件无法显示,因此这些所创建出来的文件属性都是隐藏的。...它可以将符号表(Map)文件导出,便于我们OD载入符号表进行调试。 显示出了Delphi的符号,便于分析和调试。

    3.3K20

    C#秒杀Java的五个不可替代的特性,完美的编程语言并不存在

    开发新语言往往是为了克服另一种语言的弊端,又不可避免的某些方面上健壮一些,却在另一些方面上存在不足。 C# 与 Java 都起源于 C/C++ 语言,他们面向对象方面有许多相似之处。...要在 LINQ 执行查询操作,首先获取数据库,然后创建查询,最后执行查询。 LINQ to Object 查询,这可能仅像一代码一简单,而不是为每个循环编写嵌套的复杂迭代。...表达式( LINQ 来说非常有用),已经 Java 中有了等效的实现,尽管我们可以使用流和 lambda 来查询数据,但 LINQ 简化了整个过程并且移除了很多在 Java 存在的冗余代码。...5 一些等价的关键词 语言中的有用功能不一定像在 C# 的 LINQ 或 Java 的模块一大。...这里有一些可以帮助 C# 开发人员的关键字,它们 Java 没有: as C# 的 as 关键字会尝试安全地将对象转换为某个类型,如果不能转换的话,返回 null。

    3K100

    写算法,用 C++ 还是用 Java ,差别大吗?

    赋值语句两者基本上是一的,看看每一行结尾的 “;” 你知道它们有多相似。...C++ 定义数组的同时分配了存储空间,所以定义时要指定长度,使用 new 动态申请内存时,要指定长度。...但是二者使用形式上是一的。C++ 定义和初始化二维数组一般有这几种形式: ? 与之对应的 Java 语言初始化二维数组的形式是: ?...类和封装 首先说说 C++ 的 struct,Java 没有与之对应的相似物的,但是完全可以用 class 来替换这个概念。为什么这么说呢?...C++ 对于基类声明的虚函数,继承类不需要再用 virtual 关键字修饰,当然,加了 virtual 关键字也没错误。Java 也一,abstract 关键字再继承类可以省去。

    2.8K20

    Delphi类型和引用

    消息句柄,您还可以调用缺省的消息句柄,例如上例,您声明了一个处理WM_PAINT消息的 方法,事实上Delphi提供了处理这个消息的缺省的句丙,不过句柄的名称可能与您声明的方法名称不一 ,也就是说您未必知道缺省句柄的名称...抽象方法C++称为虚函数,至少含有一个虚函数的类称为抽象类,抽象类不能建立对象实例。...派生类重载抽象方法,跟重载普通的虚拟或动态方法相似,不同的是重载的方法定义不能使 用inherited保留字,因为基类抽象方法本来就没有定义。...注意:尤其是熟悉C++的程序员要注意,C++,当您用一个类类型声明一个对象时,将自动调 用类的构造函数(这也是C++中一般不需要显式调用构造函数的原因),而在object Pascal,当您声 明了一个类类型的变量...从语法上,可以没有Write子句,这时候属性就是"只读"的。只读的属性Delphi是常见的,只读的 属性不能被修改。

    2.5K30

    C++】详解命名空间

    auto关键字、新容器、列表初始化、标准线程库等 C++14 对C++11的扩展,主要是修复C++11漏洞以及改进,比如:泛型的lambda表达式,auto的返回值类型推导,二进制字面常量等 C++17...3.3 命名空间的定义 C++相比于C语言,它新增了很多的关键字,其中一关键字就是namespace——命名空间。这个关键字就是专门用来定义命名空间域的。...但是此时的全局域中存在两个为a的变量,如果我们在对变量a进行使用时,没有指明它的所属,那么就会导致程序无法判断应该使用哪个变量a,这就是为什么系统会提示a不明确。...20,并通过extern这个关键字进行了全局变量的声明,因此它的结果就是我们初始化的结果;而对于局部变量z,当我们将test5函数对z进行访问的代码屏蔽后,此时程序正常运行,并在func2函数成功进行了访问...对于命名空间而言,它是全局域中定义的一个新的作用域,而位于命名空间中的对象会像在全局域中一可以在所在项目中任意使用,那是不是说明它们也和全局域中的对象一,生命周期是跟随整个工程的呢?

    10210

    技术◈C++核心知识总结(I)

    这几篇文章仅仅梳理C++中比较重要的核心知识点(工作或面试),如果没有C/C++基础的同学,可以自行弥补,文末我会推荐几本C/C++相关书籍!...也许C语言或Java,确实,变量的类型清晰可见,但是C++就不一了。...比如我们希望固定一个缓冲区的大小: const int bufferSize = 1024; 那么,这里bufferSize便为不可修改变量,这里的用法与C中一,下面讲一下constC++的用法...空指针NULL与nullptr 下面说一下C++的空指针。熟悉C的朋友对空指针非常熟悉,NULL。对,C++仍然有这个关键字,不信可以看上面的关键字表。...所以C++11标准推荐我们使用nullptr,这个关键字本身就是代表空指针,更加合适,所以下次如果你们C++初始化一个指针变量时,就用名副其实的nullptr吧。

    75430

    C++ 和 Java 写算法,有差别吗?

    赋值语句两者基本上是一的,看看每一行结尾的 “;” 你知道它们有多相似。...C++ 定义数组的同时分配了存储空间,所以定义时要指定长度,使用 new 动态申请内存时,要指定长度。...但是二者使用形式上是一的。C++ 定义和初始化二维数组一般有这几种形式: ? 与之对应的 Java 语言初始化二维数组的形式是: ?...9、类和封装 首先说说 C++ 的 struct,Java 没有与之对应的相似物的,但是完全可以用 class 来替换这个概念。为什么这么说呢?...C++ 对于基类声明的虚函数,继承类不需要再用 virtual 关键字修饰,当然,加了 virtual 关键字也没错误。Java 也一,abstract 关键字再继承类可以省去。

    2.4K10

    地球程序员之神:没上过大学,曾拒盖茨的Offer,4代码农靠他吃饭

    Linus只用C编程而且不到30年,而这位神级程序员近40年中一直创造引领潮流的开发工具(Turbo Pascal/Delphi/C#/TypeScript),他就是Anders Hejlsberg。...01 Anders并没有大学文凭,但这丝毫不重要。当年微软Server部门负责人Bob Muglia认为,地球上只有几个人可以做出伟大的开发工具架构,Anders还是其中那个最棒的,顶尖的顶尖。...结果Anders玩了一天玩腻了,随后开始玩汇编。大神20岁显露了神迹,他两三个星期写出了Pascal编译器,并卖给了一个英国公司。...Anders选择远程服务,因为当时并没有互联网也没有email,当时寄代码都是靠联邦快递。...后来著名的Borland C++也被直接移植架在Delphi上,这就是C++ Builder。 这时我似乎听到盖茨叹息,我非得此人不可。 04 Anders加入微软时,正是互联网风起云涌之时。

    1.3K40

    用C++Builder 6编写VCL控件

    关于编写VCL的Delphi的书籍和资料相当多,但是要使用C++来写,资料少得多了。 如何用C++语言来编写VCL控件是许多学习和使用BCB的程序员很关心的话题。如何编写呢?...然而用C++编写VCL就与使用Pascal(Delphi 中使用Object Pascal)编写有相当大的区别了。...经过上面的步骤,一个简单的Package已经可以安装在BCB的控件面板上了。...BCB的控件面板上打开My标签,你将可以看到一个图标和Panel一的图标,它就是TMyComponent类安装后的表现形式。到现在为止,一个简单的控件已经可以使用了。...但是它没有什么特殊的功能,它只是简单地继承了TPanel控件,并且TMyComponent的所有属性和事件都是TPanel的,我并没有给它定义新的属性,方法和事件。

    79220

    443视频看完编程语言排行榜15年沉浮:Python这样上位

    “真正的程序员用C++,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。...那么为什么一年内,它能超越其他两种语言?2006年又有哪些不平凡呢? 将时间定位到2006年1月1日到2006年12月31日,必应搜索C#语言,搜索得到的结果如下: ? ?...做为门户网站的必备语言,2007年5月开始,千龙网、新浪网、搜狐网、网易网、TOM网、中华网等11家网站举办“网上大讲堂”活动,旨在通过网上授课的形式与网民互动,传播科学文化知识,C/C++短期内的火爆还是没有撼动...Python人数快速增长的同时,为什么有R语言超越Objective-C这一局面呢?...正如《琅琊榜》的诗句所言:“遥映人间冰雪,暗香幽浮曲临江,遍识天下英雄路,俯首江左有梅郎。”时势造就英雄,现今AI有Python。

    1.6K82

    C++入门的基础

    ——大仲马 1、属于C++关键字 1、1、C++从何而来 为什么会出现C++呢?为什么C++关键字和C语言相对比起来,有着不少的增加?...其实想要搞明白为什么会出现这种状况,首先要明白的是C++是祖师爷用C语言的过程,饱受C语言中一些限制的诟病,C语言的基础上增加的一个更牛的系统。...1、2、C++关键字(C++98) 在这个版本,总计是63个关键字,而C语言的关键字是32个,有了很大的提升。相对于C来说,提升了很多,也更方便了。 2、命名空间 为什么要有命名空间的这一术语?...因为C/C++,变量,函数以及类都是大量存在的,这些都将存储于全局作用域,那么就可能会引起冲突。...2、引用在定义的时候就必须初始化,指针没有要求。 3、引用在初始化时引用一个实体之后,就不能引用其他实体,而指针可以在任何时候指向任何一个同类型的实体。

    15610

    Top编程语言的15年沉浮:C#默Java泪,Python终上位!

    “真正的程序员用C++,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。...那么为什么一年内,它能超越其他两种语言?2006年又有哪些不平凡呢? 将时间定位到2006年1月1日到2006年12月31日,必应搜索C#语言,搜索得到的结果如下: ? ?...做为门户网站的必备语言,2007年5月开始,千龙网、新浪网、搜狐网、网易网、TOM网、中华网等11家网站举办“网上大讲堂”活动,旨在通过网上授课的形式与网民互动,传播科学文化知识,C/C++短期内的火爆还是没有撼动...Python人数快速增长的同时,为什么有R语言超越Objective-C这一局面呢?...正如《琅琊榜》的诗句所言:“遥映人间冰雪,暗香幽浮曲临江,遍识天下英雄路,俯首江左有梅郎。”时势造就英雄,现今AI有Python。

    88720

    C++の自动类型推导和其他

    也许C语言或Java,确实,变量的类型清晰可见,但是C++就不一了。...说完auto,C++还有一个与自动类型获取有关的关键字 —— decltype。 那么这二者有什么区别呢? auto关键字根据表达式的值推导其类型,可以假想为auto变成了这个类型(实际上不是)。...比如我们希望固定一个缓冲区的大小: const int bufferSize = 1024; 那么,这里bufferSize便为不可修改变量,这里的用法与C中一,下面讲一下constC++的用法...空指针NULL与nullptr 下面说一下C++的空指针。 熟悉C的朋友对空指针非常熟悉,NULL。 对,C++仍然有这个关键字,不信可以看上面的关键字表。...所以C++11标准推荐我们使用nullptr,这个关键字本身就是代表空指针,更加合适,所以下次如果你们C++初始化一个指针变量时,就用名副其实的nullptr吧。

    66010

    C++入门篇】保姆级教程篇【上】

    ),把栈的操作放在namespace里面Test()想要访问栈每次都需要在造作前面加上这么一些东西,写起来也很麻烦,所以祖师爷规定了一种配套的关键字——using,使用方法是:using namespace...C++,我们的输入为:cin(console in控制台输入),搭配'>>'(流提取运算符)使用,使用方式为: std::cin >> 变量;//其中cin与cout一会自动识别变量的类型...祖师爷对C语言的函数部分也不是很满意,例如在栈的数据结构栈的初始化期间,需要传参capacity容量来给栈开辟空间大小,C语言中我们每次初始化时都需要给个值,祖师爷觉得有些麻烦,所以C++里面出现了一个叫做缺省参数的语法规则...2)为什么C++可以用函数重载? 在学习完函数重载的过程,有没有思考这样一个问题:为什么这么好用的东西C语言不支持呢?...内联函数也就是普通函数前面加上inline关键字变成了内联函数,内联函数本质上和宏一,都是对文本进行替换,而且可以对函数进行调试,这样可以节省很多函数调用销毁的开销,但同时会让目标文件变大。

    12210

    inline: 我的理解还停留在20年前

    C++程序通常由多个C++源文件组成(.cc/.cpp等),编译器进行编译的时候,通常是将这些文件单独编译成模块或者目标文件,然后通过链接器将所有模块/目标文件链接到一个可执行文件或共享/静态库。...而对于具有关键字inline的函数声明或者定义,链接器链接阶段,一但发现具有多个定义的inline函数,其只取一个,因此,对于同名同参的inline函数,如果其实现不同,则会引起未定义行为(链接器只取其中一个...++,类内变量的初始化经历了多次变动,每一次的变动都是因为前一次的初始化方式太过麻烦,究根到底,还是因为类内成员的初始化不能像一般变量一声明的同时加以定义。...,有几个构造函数,就得初始化几次变量,很麻烦,且一不小心容易出错。...initialization of non-const static member 'Test::value_' 为了像cpp11支持类内初始化成员变量一,自cpp17起,对于静态成员也支持声明时候进行初始化

    36010

    4分钟看尽Top编程语言15年沉浮:C#默Java泪,Python终上位!

    “真正的程序员用C++,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。...那么为什么一年内,它能超越其他两种语言?2006年又有哪些不平凡呢? 文摘菌将时间定位到2006年1月1日到2006年12月31日,必应搜索C#语言,搜索得到的结果如下: ? ?...做为门户网站的必备语言,2007年5月开始,千龙网、新浪网、搜狐网、网易网、TOM网、中华网等11家网站举办“网上大讲堂”活动,旨在通过网上授课的形式与网民互动,传播科学文化知识,C/C++短期内的火爆还是没有撼动...Python人数快速增长的同时,为什么有R语言超越Objective-C这一局面呢?...正如《琅琊榜》的诗句所言:“遥映人间冰雪,暗香幽浮曲临江,遍识天下英雄路,俯首江左有梅郎。”时势造就英雄,现今AI有Python。

    1.3K20

    一个玩游戏的失足青年,转行做游戏开发到教育的挣扎过程

    上网需要身份证,我当时做了一个外挂程序,事先在程序录入一些身份号,双击一个身份证号,在网吧管理软件上自动弹出上机解锁的窗口,将身份证自动填写上去。...到大四开始,我没有天天去上课了,在家里自学研究Delphi开发,同时做毕业设计,记得当年在毕业答辩的时候,上面有同学答辩,我在下面临时改Bug。...当时我给诚心向这位大牛学习学习,给他打下手、做界面、做测试,我也慢慢从使用 Delphi 转到用 C++ Builder。...Delphi与C++Builder的关系,很像C#与VB、JavaScript与TypeScript的感觉,库是一的,只是语言不同,过渡起来比较容易。...我在这个网吧行业的公司做了4年多,竞争也越来越大,网吧也越来越难做,Delphi的工作岗位也越来越少,那位牛人技术很好,但也是与公司利益上没谈好先离开了。

    88410
    领券