C++学习笔记——类和对象(二)

设计一个类就是设计一个新的类型,应该考虑:

  • 此类型的“合法值”是什么?
  • 此类型应该有什么样的函数和操作符?
  • 新类型的对象该如何被创建和销毁?
  • 如何进行对象的初始化和赋值?
  • 对象作为函数的参数如何以值传递?
  • 谁将使用此类型的对象成员?

类定义的语法形式:

class 类名称
{
    public:
            公有成员(外部接口)
    private:
            私有成员
    protected:
            保护型成员
};

公有类型成员:在关键字public后面声明,他们是类和外部的接口,任何外部函数都可以访问公有类型数据和函数。

私有类型成员:在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。

保护类型成员:与private类似,其差别表示在继承与派生时对派生类的影响不同。

对象定义的语法:

类名 对象名      (Clock myClock;)

类中成员之间直接使用成员名互相访问,从类外访问成员使用“对象名.成员名”方式访问public成员

类的成员函数:

  • 再类中声明函数原型;
  • 可以在类外给出函数体实现,并在函数名前使用类名加以限定;
  • 也可以直接在类中给出函数体,形成内联成员函数;
  • 允许声明重载函数和带参数值的函数。

内联成员函数:

  • 为了提高运行时的效率,对于较简单的函数可以声明为内联形式 。
  • 内联函数体中不要有复杂结构(如循环语句和switch语句)。
  • 在类中声明内联成员函数的方式:
    • 将函数体放在类的声明里
    • 使用inline关键字

举例:钟表类

类的定义:

#include <iostream>
using namespace std;
class Clock{
public:
    void setTime(int newH = 0; int newM = 0; int newS = 0);
    void showTime();
private:
    int hour, minute, second;
}

成员函数的实现:

void Clock::setTime(int newH, int newM, int newS) {
    hour = newH;
    minute = newM;
    second = newS;
}

void Clock::showTime() {
    cout << hour << ":" << minute << ":" << second;
}

对象的使用:

int main() {
    Clock myClock; // 定义一个Clock实例myClock
    myClock.setTime(11, 11, 11);
    myClock.showTime();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/LKZYnih/article/details/81182718