[C++] 用Xcode来写C++程序[5] 函数的重载与模板

用Xcode来写C++程序[5] 函数的重载与模板

 

此节包括函数重载,隐式函数重载,函数模板,带参数函数模板

 

函数的重载

#include <iostream>
using namespace std;

int operate (int a, int b) {
    return (a * b);
}

double operate (double a, double b) {
    return (a / b);
}

int main ()
{
    int x    = 5;
    int y    = 2;
    double n = 5.0 ;
    double m = 2.0;

    cout << operate (x,y) << '\n';
    cout << operate (n,m) << '\n';

    return 0;
}

打印结果

10
2.5
Program ended with exit code: 0

 

函数模板

#include <iostream>
using namespace std;

// 模板
template <class T>
T sum (T a, T b) {
    T result;
    result = a + b;
    return result;
}

int main () {
    // 值初始化
    int i    = 5;
    int j    = 6;
    int k    = 0;
    double f = 2.0, g = 0.5, h;

    // 使用模板函数
    k = sum<int>(i, j);
    h = sum<double>(f, g);

    // 打印输出
    cout << k << '\n';
    cout << h << '\n';

    return 0;
}

打印结果

30
2.5
Program ended with exit code: 0

 

模板自动匹配

#include <iostream>
using namespace std;

template <class T, class U>
bool are_equal (T a, U b) {
    return (a == b);
}

int main () {

    // 自动模板识别
    if (are_equal(10,10.0))
        cout << "x and y are equal\n";
    else
        cout << "x and y are not equal\n";
    return 0;
}

打印结果

x and y are equal
Program ended with exit code: 0

 

带参数的模板

#include <iostream>
using namespace std;

template <class T, int N>
T fixed_multiply (T val) {
    return val * N;
}

int main() {
    std::cout << fixed_multiply<int, 2>(10) << '\n';
    std::cout << fixed_multiply<int, 3>(10) << '\n';
}

打印结果

20
30
Program ended with exit code: 0
时间: 2024-11-02 13:22:49

[C++] 用Xcode来写C++程序[5] 函数的重载与模板的相关文章

[C++] 用Xcode来写C++程序[4] 函数

用Xcode来写C++程序[4] 函数     此节包括引用函数,内联函数,防止修改函数入参,函数自身带有默认值. 引用函数:防止复制对象,减少系统开销 内联函数:编译的时候根据具体情形将代码嵌入进去,成不成功编译器说了算,减少系统开销提升性能 引用函数(防止篡改初始值的入参声明方式):防止修改数据源 函数参数带有默认值:函数的某个参数可以给定默认值,精简函数的使用   最简单的函数 #include <iostream> using namespace std; int addition (

[C++] 用Xcode来写C++程序[7] Class

用Xcode来写C++程序[7] Class   不带构造函数的Rectangle类 // // Rectangle.h // Plus // // Created by YouXianMing on 15/3/12. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #ifndef __Plus__Rectangle__ #define __Plus__Rectangle__ #include <stdio.h> clas

[C++] 用Xcode来写C++程序[1] 新建C++项目工程

用Xcode来写C++程序[1] 新建C++项目工程   第一节从新建工程并编译C++源码开始   新建工程 源码: // // main.cpp // YeHelloWorld // // Created by XianMingYou on 15/3/5. // Copyright (c) 2015年 XianMingYou. All rights reserved. // #include <iostream> using namespace std; int main() { cout

[C++] 用Xcode来写C++程序[3] Constants

用Xcode来写C++程序[3] Constants 以下是一些基本数据的含义: 75 // int 75u // unsigned int 75l // long 75ul // unsigned long 75lu // unsigned long 3.14159 // 3.14159 6.02e23 // 6.02 x 10^23 1.6e-19 // 1.6 x 10^-19 3.0 // 3.0 3.14159L // long double 6.02e23f // float 'z'

[C++] 用Xcode来写C++程序[6] Name visibility

用Xcode来写C++程序[6] Name visibility   此小结包括了命名空间的一些使用细节   命名空间 #include <iostream> using namespace std; namespace foo { // 函数 int value() { return 5; } } namespace bar { // 常量 const double pi = 3.1416; // 函数 double value() { return 2*pi; } } int main (

[C++] 用Xcode来写C++程序[2] 操作变量

用Xcode来写C++程序[2] 操作变量   此节讲解包括变量的初始化的几种方式,以及泛型编程的两种变量赋值方式.   最基本的变量赋值以及操作: // operating with variables #include <iostream> using namespace std; int main () { // 声明变量 int a, b; int result; // 赋值 a = 5; b = 2; a = a + 1; result = a - b; // 打印结果 cout &

小程序 求解-这里有一题ACM的小题目,求众神解答。帮写个程序。小弟冰天雪地裸奔哭嚎以示感谢!

问题描述 这里有一题ACM的小题目,求众神解答.帮写个程序.小弟冰天雪地裸奔哭嚎以示感谢! 邮局选址: 在一个按照东西和南北方向划分成规整街区的城市里,n 个居民点散乱的分布在不同的街区中.用X坐标表示东西向,用Y坐标表示南北向,各居民点的位置可以有坐标(XY)表示.街区中任意2点(X1,Y1)和(X2,Y2)质检的距离可以用数值丨X1-X2丨+丨Y1-Y2丨度量.居民们希望在城市中选择建立邮局的最佳位置,使n 个居民点到邮局的距离总和最小. 编程任务: 给定n 个居民点的位置,计算n个居民点到

工程-vc++6.0写的程序用vs2010打开需要改变些什么

问题描述 vc++6.0写的程序用vs2010打开需要改变些什么 要整理一个程序 ,不是自己写的,原来是vc++6.0写的,现在用vs2010打开报一些很奇怪的错,都指向头文件,complex 还有string 搞了很长时间了,哪位大神给解答一下,小弟感激不尽啊,谢谢 解决方案 这可能是头文件的错误.因为不同的编译器可能将库文件放在不同的头文件中,所以要想把错误改正,需要了解需要的头文件放在那个库中.其实用遵循统一标准的编译器就可以避免这些问题,可以用linux gcc 编译器! 解决方案二:

java方式来写js程序(demo)

js|程序  javascript应用是非常广泛的,而且功能特别强大,但是javascript程序就是没有java代码好看,这点是好无疑问的,不过因为js应用太广了,在web应用中几乎离不开它,我初学js,总想像写java程序那样写js. 一个是过滤相同的元素:<script src="core.js"></script><script src="collection.js"></script><script&g