代码之家  ›  专栏  ›  技术社区  ›  josh

不需要定义类成员函数吗?

c++
  •  2
  • josh  · 技术社区  · 15 年前

    #include <iostream>
    
    class sam {
        public:
            void func1();
            int func2();
    };
    
    int main() {
        sam s;
    }
    

    它不应该因为缺少类成员定义而产生错误吗?

    5 回复  |  直到 15 年前
        1
  •  8
  •   Philipp    15 年前

    如果不调用成员函数,就不必定义它们。即使调用它们,编译器也不会抱怨,因为它们可以在其他编译单元中定义。只有链接器才会抱怨。不定义函数是可以接受的,并且通常会因为不希望的行为(例如防止复制)而强制出错。

        2
  •  4
  •   Johannes Schaub - litb    15 年前

    是的,如果不使用类成员函数,则不定义它是完全有效的。对于非成员函数也是如此。不过,虚拟函数需要一个定义。但是,如果不使用定义,纯虚拟机可以省略定义。

    sizeof

    sizeof (s.func2()); // still not used!
    
        3
  •  2
  •   Sliq    15 年前

    void Sam::func1()
    {
        // do stuff here
    }
    
        4
  •  1
  •   cpx    15 年前
        5
  •  0
  •   user195488 user195488    15 年前

    你呢 定义了吗 提供了一个功能原型。如果没有函数定义,链接器可能显示警告(例如,Borland C++ + Builder 5没有)。