C++笔记十三:C++对C的扩展——C++中所有变量和函数都必须有类型

C++中所有的变量和函数都必须有类型;

C语言中的默认类型在C++中是不合法的!

在C语言里面可以写一些很奇怪的函数!并且可以运行成功!

f(i)函数的返回值是什么类型?参数又是什么类型?我们赋值10居然可以打印出来!

g()函数可以接受多少个参数?我们没有参数,但是函数调用时我们可以加上参数,并且运行成功!

f(i)

{

printf("i=%d\n",i);

}

g()

{

return 5;

}

int main()

{

f(10);

printf("g()=%d\n",g(1,2,3,4,5));

return 0;

}

运行结果:

i = 10

g() = 5

Press any key to continu

所以说这就是C语言不好的地方,这个不好的地方C++对其进行了摒弃!

同样的代码我们放到C++中来看一下!

#include<iostream>

using namespace std;

f(i)

{

printf("i=%d\n",i);

}

g()

{

return 5;

}

int main()

{

f(10);

printf("g()=%d\n",g(1,2,3,4,5));

system("pause");

return 0;

}

发现编译报错。

在C++中,不管是函数返回值类型还是变量类型,还是函数参数数量,我们都不能马虎,C++编译器都可以一一找出错误!下面的程序编译才可以通过!

#include<iostream>

using namespace std;

int f(int i)

{

printf("i=%d\n",i);

return 0;

}

int g()

{

return 5;

}

int main()

{

f(10);

printf("g()=%d\n",g());

system("pause");

return 0;

}

因此C++对变量和函数的类型检查更加严格!

小结:

在C语言中

int f() 表示返回值为int类型,接受任意参数的函数;

int f(void) 表示返回值为int类型的无参函数。

在C++

int f()和int f(void)具有相同的意义,都表示返回值为int类型的无参函数。

C++更加强调类型,任意的程序元素都必须指明类型。

长按解锁

解锁更多精彩内幕

依法编程

微信:Lightspeed-Tech

技术驱动生活

原文地址:https://www.cnblogs.com/tyyhmtyyhm/p/8973888.html

时间: 2024-10-27 09:15:42

C++笔记十三:C++对C的扩展——C++中所有变量和函数都必须有类型的相关文章

第十三周(-形状类族的中的纯虚函数)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名:第十三周(-形状类族的中的纯虚函数) *作者:王忠 *完毕日期:2015.6.02 *版本:v1.0 * *问题描写叙述:写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用例如以下的main()函数,求出定义的几个几何体的面积和. *输入描写叙述: *程序输出: #include <iostr

PHP 学习笔记(一):基础教程:语法,变量,函数,数组,超全局

PHP简介 PHP 脚本在服务器上执行. 什么是 PHP 文件 PHP 文件能够包含文本.HTML.CSS 以及 PHP 代码 PHP 代码在服务器上执行,而结果以纯文本返回浏览器 PHP 文件的后缀是 ".php" PHP能够做什么 PHP 能够生成动态页面内容 PHP 能够创建.打开.读取.写入.删除以及关闭服务器上的文件 PHP 能够接收表单数据 PHP 能够发送并取回 cookies PHP 能够添加.删除.修改数据库中的数据 PHP 能够限制用户访问网站中的某些页面 PHP

第十三周项目二-形状类族中的纯虚函数

写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的main()函数,求出定义的几个几何体的面积和. int main() { Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长.宽 Triangle t1(4.5,8.4),t2(3

JavaScript知识笔记(一)——入门、语句、注释、变量、函数、输出内容、对话框、窗口

JavaScript可以提供漂亮的网页.令用户满意的上网体验. 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) 引用JavaScript: 一.使用<script>标签在HTML文件中添加JavaScript代码,如图: 二.HTML文件和JS代码分开,并单独创建一个JavaScript文件(简称JS文件),其文件后缀通常为.js,然后将JS代码直接写在JS文件中. 注意:在JS文件中,不需要<script&

R语言学习笔记(十七):data.table包中melt与dcast函数的使用

melt函数可以将宽数据转化为长数据 dcast函数可以将长数据转化为宽数据 > DT = fread("melt_default.csv") > DT family_id age_mother dob_child1 dob_child2 dob_child3 1: 1 30 1998-11-26 2000-01-29 NA 2: 2 27 1996-06-22 NA NA 3: 3 26 2002-07-11 2004-04-05 2007-09-02 4: 4 32 2

java之jvm学习笔记十三(jvm基本结构)

java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成图形,所以只要你有耐心,仔细,认真,并发挥你的想象力,这一章之后你会充满自信.当然,不是说看完本章,就对jvm了解了,jvm要学习的知识实在是非常的多.在你看完本节之后,后续我们还会来学jvm的细节,但是如果你在学习完本节的前提下去学习,再学习其他jvm的细节会事半功倍. 为了让你每一个知识点都有迹

Java程序员的JavaScript学习笔记(11——jQuery-在“对象”层面扩展)

计划按如下顺序完成这篇笔记: 1.    理念. 2.    属性复制和继承. 3.    this/call/apply. 4.    闭包/getter/setter. 5.    prototype. 6.    面向对象模拟. 7.    jQuery基本机制. 8.    jQuery选择器. 9.    jQuery工具方法. 10.    jQuery-在"类"层面扩展. 11.    jQuery-在"对象"层面扩展. 12.    jQuery-扩

swift 笔记 (十三) —— 继承

继承 一个类可以从其它类继承方法,属性以及一些特征.被继承的类叫父类,那另一种就是子类了..这个我们都懂的.. 这是一个官方给的例子,它是一个基类(Base Class),因为它没有继承任何一个类,这个类里面有一个init方法,我们暂时忽略,只要知道这是个初始化方法,在我们创建一个类的实例的时候,这个方法会被执行,下一篇笔记会详细分析. class MyCar: Vehicle {          //继承的语法 init () {                              /

ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归.所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然. 但是,如果手写Html标签效率又比较低,可重用度比较低.这时,我们该怎样来提高效率呢?首先,经过上篇我们知道可以通过ViewData传递数据,于是我们可以写出以下的Html代码: <input name="UserName&quo