zoukankan      html  css  js  c++  java
  • C++ 类中的函数重载

    我们知道C++中非常重要的:1.全局函数、2.普通成员函数、3.静态成员函数。 

    类中的成员函数构成的重载有这几点:

      1. 构造函数的重载。

      2.普通成员函数的重载。

      3.静态成员函数的重载。

    例子:

     1 #include <stdio.h>
     2 
     3 class Test
     4 {
     5     int i;
     6 public:
     7     Test()
     8     {
     9         printf("Test::Test()
    ");
    10         this->i = 0;
    11     }
    12     
    13     Test(int i)
    14     {
    15         printf("Test::Test(int i)
    ");
    16         this->i = i;
    17     }
    18     
    19     Test(const Test& obj)  // 三个构造函数之间也构成了重载,这是拷贝构造函数;
    20     {
    21         printf("Test(const Test& obj)
    ");
    22         this->i = obj.i;
    23     }
    24     
    25     static void func()
    26     {
    27         printf("void Test::func()
    ");
    28     }
    29     
    30     void func(int i)  // 和上面的静态成员函数构成重载;
    31     {
    32         printf("void Test::func(int i), i = %d
    ", i);
    33     }
    34     
    35     int getI()
    36     {
    37         return i;
    38     }
    39 };
    40 
    41 void func()
    42 {
    43     printf("void func()
    ");
    44 }
    45 
    46 void func(int i)
    47 {
    48     printf("void func(int i), i = %d
    ", i);
    49 }
    50 
    51 int main()
    52 {
    53     func();
    54     func(1);
    55     
    56     Test t;        // Test::Test();
    57     Test t1(1);    // Test::Test(int i);
    58     Test t2(t1);   // Test(const Test& obj);
    59     
    60     func();        // void func();
    61     Test::func();  // void Test::func();
    62     
    63     func(2);       // void func(int i), i = 2;
    64     t1.func(2);    // void Test::func(int i), i = 2;
    65     t1.func();     // void Test::func();
    66     
    67     return 0;
    68 }

    注意:

    三种函数的本质不同。

    普通成员函数和静态成员函数之间可以构成重载。

    普通成员函数和静态成员函数在同一个作用域(不区分内存类别)中。

    类的成员函数和全局函数不能构成重载,不在同一个作用域中。

    总结:

    1,类的成员函数之间可以进行重载;

        2,重载必须发生在同一个作用域中;

        3,全局函数和成员函数不能构成重载关系;

        4,重载的意义在于扩展已经存在的功能;

  • 相关阅读:
    线程安全 ---Struts1与Struts2
    sql servset 有表,没表备份数据。
    group by 使用及体会 和having用法
    js 去掉输入的空格
    struts + json + ajax +级联 例子
    js 级联 思路
    return break continue 的用法和作用
    eclise 怎么集成 spket 。及spket 与 sdk.jsb3管理起来
    logback基本用法
    log4j:特定类的日志输出到指定的日志文件中
  • 原文地址:https://www.cnblogs.com/loliconinvincible/p/12562121.html
Copyright © 2011-2022 走看看