类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。本文主要介绍C++ 类成员函数。

1、成员函数(方法)声明

成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义。在类定义中定义的成员函数把函数声明为内联的,即便没有使用 inline 标识符。

例如,

#include<iostream> 
using namespace std;
#include <string>
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 <iostream>
#include<cstring>
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<<endl;
}
void Person::Input()
{
    cin>>name>>age>>sex;
 } 
int main()
{
    Person person1,person2;
    person1.Input();
    person2.Register("cjavapy",19,'m');
    person1.ShowMe();
    person2.ShowMe();
    return 0;
}

推荐文档