C++详解默认参数的构造函数及简单实例代码
现在给大家介绍下 有默认参数的构造函数:
大家知道函数获取形参的时候是通过函数调用时在实参里获得的,因此我们必须保证 实参的个数 和 形参的个数必须相同。而且有些情况下我们对于实参或许都是个固定的值。例如 我们需要计算长方形的面积 长x宽 但是用户可以不输入长 而且如果用户指定的情况下默认的长为 3,但是如果用户指定了则使用用户指定的宽 这就是用到默认参数了!
代码:
#include <iostream> using namespace std; int area(int l,int w=3);// 函数声明 并定义默认参数w=3; int main(){ int c=4; //长 int k=5; int res; //结果 res = area(c); cout<<res<<endl; return 0; } int area(int l,int w){//函数定义 l长 w宽 int res=0; res = l*w; return res; }
例如上面的代码,如果我们像在8行 res=area(c); 这里没有写成 res=area(c,w);则表示 不指定宽是多少,所以如果写成了 后面这样则说明用户指定了这个长方形的宽 为5;那么两者的结果就是不同的!
前者额结果为 12
后者的记过为 20
这就是默认参数的函数 和 没有默认参数函数的区别;
下面的习题:
设计函数,计算长方体的体积 和 长方形的面积
如果用户指定了三个参数则计算长方体的 体积 如果用户输入2个参数则计算长方形面积!
利用到含有默认参数的构造函数;
参考代码:
#include "stdafx.h" #include <iostream> #include <cmath> using namespace std; int area(int l,int w,int h=1);// 函数声明 并定义默认参数w=3; int main(){ int c=4; //长 int k=5;//宽 int h=2;//高 int res; //结果 res = area(c,k); int res2=area(c,k,h); cout<<"面积为 ="<<res<<endl; cout<<"体积为 ="<<res2<<endl; return 0; } int area(int l,int w,int h){//函数定义 l长 w宽 int res=0; res = l*w*h; return res; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
详解C++中对构造函数和赋值运算符的复制和移动操作
复制构造函数和复制赋值运算符 从 C++ 11 中开始,该语言支持两种类型的分配:复制赋值和移动赋值. 在本文中,"赋值"意味着复制赋值,除非有其他显式声明. 赋值操作和初始化操作都会导致对象被复制. 赋值:在将一个对象的值赋给另一个对象时,第一个对象将复制到第二个对象中. 因此, Point a, b; ... a = b; 导致 b 的值被复制到 a 中. 初始化:在以下情况下将进行初始化:声明新对象.参数通过值传递给函数或值通过值从函数返回. 您可以为类类型的对象定义"
-
详解C++ 拷贝构造函数和赋值运算符
本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数.什么情况下调用赋值运算符.最后,简单的分析了下深拷贝和浅拷贝的问题. 拷贝构造函数和赋值运算符 在默认情况下(用户没有定义,但是也没有显式的删除),编译器会自动的隐式生成一个拷贝构造函数和赋值运算符.但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符,这样的对象就不能通过值传递,也不能进行赋值运算. class Person { public: Person(const Person& p) = dele
-
详谈C++何时需要定义赋值/复制构造函数
继承和动态内存分配 假设基类使用了动态内存分配,而且定义了析构函数.复制构造函数和赋值函数,但是在派生类中没有使用动态内存分配,那么在派生类中不需要显示定义析构函数.复制构造函数和赋值函数. 当基类和派生类采用动态内存分配时,派生类的析构函数.复制构造函数.赋值运算符都必须使用相应的基类方法来处理基类元素.这种要求是通过三种不同的方式来满足的.对于析构函数.这是自动完成的,也就是说在派生类的析构函数中无需显示调用基类的析构函数.对于构造函数,这是通过在初始化成员列表中调用基类的复制构造函数来完成
-
C++ 类的构造函数详解及实例
C++ 类的构造函数 默认构造函数 如果你定义一个类,并且没有给它定义构造函数.编译器会为这个类提供默认的构造函数.如果你提供了构造函数,编译器是不会再为你提供一个默认构造函数的.编译器提供的默认构造函数什么都没做.类的成员变量将遵守默认的初始化规则. 编译器提供的默认构造函数的初始化规则: 在栈和堆中的类对象的内置或复合类型成员变量将为脏数据: 在全局变量区的类对象的内置或复合类型成员变量初始化为0: 类对象成员将调用默认的构造函数来初始化: #include <iostream> usin
-
C++中的构造函数与析造函数详解
C++中的构造函数与析造函数详解 构造函数的概念 (1)构造函数是特殊的成员函数 (2)当创建类类型的新对象时,系统自动会调用构造函数 (3) 构造函数是为了保证对象的每个数据成员都被正确的初始化. 创建构造函数的注意事项: (1) 函数名与类名相同: (2) 没有返回类型,返回类型也不能是void型 (3) 构造函数通常情况下声明为public,否则不能像其它成员函数那样被显示的调用 (4) 构造
-
完全掌握C++编程中构造函数使用的超级学习教程
构造函数是一种可初始化其类的实例的成员函数.构造函数具有与类相同的名称,没有返回值.构造函数可以具有任意数量的参数,类可以具有任意数量的重载构造函数.构造函数可以具有任何可访问性(公共.受保护或私有).如果未定义任何构造函数,则编译器会生成不采用任何参数的默认构造函数:可以通过将默认构造函数声明为已删除来重写此行为. 构造函数顺序 构造函数按此顺序执行工作: 按声明顺序调用基类和成员构造函数. 如果类派生自虚拟基类,则会将对象的虚拟基指针初始化. 如果类具有或继承了虚函数,则会将对象的虚函数指针
-
C++详解默认参数的构造函数及简单实例代码
现在给大家介绍下 有默认参数的构造函数: 大家知道函数获取形参的时候是通过函数调用时在实参里获得的,因此我们必须保证 实参的个数 和 形参的个数必须相同.而且有些情况下我们对于实参或许都是个固定的值.例如 我们需要计算长方形的面积 长x宽 但是用户可以不输入长 而且如果用户指定的情况下默认的长为 3,但是如果用户指定了则使用用户指定的宽 这就是用到默认参数了! 代码: #include <iostream> using namespace std; int area(int l,int w=3
-
详解json string转换为java bean及实例代码
详解json string转换为java bean及实例代码 pom中添加如下两个库: <dependency> <groupId>org.codehaus.jackson </groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.2</version> <scope>provided</scope> </depende
-
详解Java中接口的定义与实例代码
Java中接口的定义详解 1.定义接口 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; } 修饰符:可选,用于指定接口的访问权限,可选值为public.如果省略则使用默认的访问权限. 接口名:必选参数,用于
-
详解python脚本自动生成需要文件实例代码
python脚本自动生成需要文件 在工作中我们经常需要通过一个文件写出另外一个文件,然而既然是对应关系肯定可以总结规律让计算机帮我们完成,今天我们就通过一个通用文件生成的python脚本来实现这个功能,将大家从每日重复的劳动中解放! 定义一个函数 def produceBnf(infilename,outfilename): List=[] with open(infilename,'r') as inf: for line in inf.readlines(): List.append(re.
-
C++语法详解之封装、构造函数、析构函数
大家先了解下什么是构造函数,什么是析构函数,作用是什么? 构造函数(方法)是对象创建完成后第一个被对象自动调用的方法.它存在于每个声明的类中,是一个特殊的成员方法.作用是执行一些初始化的任务.Php中使用__construct()声明构造方法,并且只能声明一个. 析构函数(方法)作用和构造方法正好相反,是对象被销毁之前最后一个被对象自动调用的方法.是PHP5中新添加的内容作用是用于实现在销毁一个对象之前执行一些特定的操作,诸如关闭文件和释放内存等. 下面在通过具体例子看下C++语法详解之封装.构
-
DJango的创建和使用详解(默认数据库sqlite3)
1.安装虚拟环境 虚拟环境是真实python环境的复制版本. 安装虚拟环境的命令: 1)sudo pip install virtualenv #安装虚拟环境 2)sudo pip install virtualenvwrapper #安装虚拟环境扩展包 3)编辑家目录下面的.bashrc文件,添加下面两行. export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 4)使用source .b
-
Python详解argparse参数模块之命令行参数
目录 前言 示例一:最简参数对象 示例二:整数求和 示例三:文件是否被篡改 自定义类型 choices选项限定 required必选参数 子命令 前言 help(argparse)查看说明文档,“argparse - Command-line parsing library”我们可以知道是一个命令行解析库,是关于参数解析相关的一个模块. 示例一:最简参数对象 先来一段简单的代码,快速熟知下这个参数是个啥.保存为t.py这样一个文件 import argparse parser = argpars
-
解析C++中构造函数的默认参数和构造函数的重载
C++构造函数的默认参数 和普通函数一样,构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值. [例] #include <iostream> using namespace std; class Box { public : Box(int h=10,int w=10,int len=10); //在声明构造函数时指定默认参数 int volume( ); private : int height; int width; int l
-
详解HTTP请求与响应基础及实例
详解HTTP请求与响应基础及实例 一.HTTP的请求与响应 二.HttpServletRequest和HttpServletResponse对象获取HTTP响应和请求 一.HTTP的请求与响应 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议.是客户端和服务器端之间数据传输的格式规范. 通常,由HTTP客户端发起一个请求,服务端一旦收到请求,向客户端返回一个相应(一个请求的发出,有且只有一个响应). (一)
-
详解使用Mybatis-plus + velocity模板生成自定义的代码
pom.xml文件的配置 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId&
随机推荐
- Coldfusion MX PageList之骨灰版
- ascii码表(二进制 十进制 十六进制)详细介绍
- servlet之session工作原理简介_动力节点Java学院整理
- PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
- Symfony2函数用法实例分析
- PHP5中使用PDO连接数据库的方法
- MySQL大内存配置方案 如my-medium.ini、my-huge.ini等
- 微信小程序 实例开发总结
- PHP中关于PDO数据访问抽象层的功能操作实例
- JavaScript常用小技巧小结
- js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
- 采用软件负载均衡器实现web服务器集群(iis+nginx)
- IO多路复用之poll全面总结(必看篇)
- Android通过自定义Activity实现悬浮的Dialog详解
- jQuery中的一些常见方法小结(推荐)
- 将你的Windows XP专业版改造成媒体中心版的方法
- Centos部署django服务nginx+uwsgi的方法
- java 实现发短信功能---腾讯云短信
- Android悬浮窗的实现(易错点)
- vue 将页面公用的头部组件化的方法