[C++]C++类基本语法

本测试代码包括以下内容:

(1)如何使用构造函数;
(2)默认构造函数;
(3)对象间赋值;
(4)const使用语法;
(5)定义类常量: 一种方法是用enum,另一种方法是使用static。

#include <iostream>

using namespace std;

enum sexType
{
    MAN,
    WOMAN
};

class Human
{
    //the default is private
    private:
        string name;
        sexType sex;
        int age;


        //(5) 定义类常量: 一种方法是用enum,另一种方法是使用static
        enum{LEN=1};
        static const int LEN2 = 3;

    public:
       //如果类定义中没有提供任何构造函数,则编译器提供默认构造函数。但,如果类中定义了构造函数,那么编写者必须同时提供一个默认构造函数。
       //有两种方法提供默认构造函数:
       //(1) 定义一个没有参数的构造函数:Human();
       //(2) 为非默认构造函数的参数提供默认值: Human(string m_name="no name", int m_age=0, sexType m_sex=MAN);
       //两种定义方式只能二选一
       Human();
       Human(string m_name, int m_age, sexType m_sex);
       Human(int m_age);
       ~Human();

       //定义在类声明中的方法为内联方法。也可以使用inline关键字将函数定义在类声明外部。
       void show() const  //const加在函数名后面表示该函数不会修改该类的数据成员。
       {
           cout<<"This is "<<name<<", sex: "<<sex<<", "<<age<<" Years old."<<endl;
       }


};

Human::Human()
{
    cout<<"default construct function"<<endl;
}

Human::Human(string m_name, int m_age, sexType m_sex)
{
    cout<<"construct function: "<<m_name<<endl;
    name = m_name;
    age = m_age;
    sex = m_sex;
}

Human::Human(int m_age)
{
    age = m_age;
}

Human::~Human()
{
   cout<<"destroy function: "<<name<<endl;
}

int main()
{
    cout << "This is test code of C++ class: "<< endl;
    {
        //(1) use of construct function
        Human jack = Human("Jack", 30, MAN);  //显示调用
        Human jerry("Jerry", 26, MAN);        //隐式调用
        Human *pTom = new Human("Tom", 10, MAN); //New调用
        //当构造函数只有一个参数时,可以直接用赋值语句赋值。只有一个参数的构造函数将会被自动调用
        Human marry = 11; //赋值调用

        //(2) defaults construct function
        Human Lucy;

        //(3) 赋值对象
        Human James;
        James = Human("James", 28, MAN); //创建一个临时对象James,copy一份儿该对象赋值给James变量。紧接着该临时对象会被销毁。

        //(4) const
        const Human Thomas("Thomas", 29, MAN);
        Thomas.show();  //The show method must define with 'const'
    }
    return 0;
}

运行结果为:

[C++]C++类基本语法_第1张图片

你可能感兴趣的:(C++)