1、成员函数(方法)声明
成员函数可以定义在类定义内部,或者单独使用范围解析运算符 ::
来定义。在类定义中定义的成员函数把函数声明为内联的,即便没有使用 inline 标识符。
例如,
#includeusing namespace std;#include class Foo {public: std::string s; // 默认构造函数 Foo() { std::cout << "default constructor" << std::endl; } // 复制构造函数 Foo(const Foo& foo) { std::cout << "copy constructor" << std::endl; s = foo.s; } // 复制赋值运算符 Foo& operator=(const Foo& foo) { std::cout << "copy assignment operator" << std::endl; s = foo.s; return * this;} // 移动构造函数 Foo(Foo&& foo) { std::cout << "move constructor" << std::endl; s = std::move(foo.s); } // 移动赋值运算符 Foo& operator=(Foo&& foo) { std::cout << "move assignment operator" << std::endl; s = std::move(foo.s); return *this;}};int main() { Foo foo1; Foo foo2(foo1); foo1 = foo2; Foo foo3(std::move(foo1)); foo2 = std::move(foo3);}
2、使用范围解析运算符(::)
可以在类的外部使用范围解析运算符 ::
定义函数。
例如,
#include#include using namespace std;class Person{ string name; int age; char sex;// 成员函数声明public: void Register(string,int,char); void ShowMe(); void Input(); string ID;};// 成员函数定义void Person::Register(string na,int ag,char se){ name=na; age=ag; sex=se;}void Person::ShowMe(){ cout< >name>>age>>sex; } int main(){ Person person1,person2; person1.Input(); person2.Register("wonhero",19,'m'); person1.ShowMe(); person2.ShowMe(); return 0;}