zoukankan      html  css  js  c++  java
  • 《accelerated c++》第九章---设计类

    本章简单介绍了类的设计,但是包含了一些好的设计原则。


     1一些通用的设计原则

    (1)一个函数是否设计成成员函数的原则:如果这个函数改变对象的状态,那么这个函数就应该成为这个对象的成员。

    (2)对于内置类型成员变量来说,构造函数中应该给他们提供值,否则,在当对象是局部变量时,内置成员变量的值是错误的(使用所占内存刚好含有的值)。

     2 文件

    头文件的代码中使用见过限定的名字。这样别人使用时就可以尽量少的包含必要的声明。

    struct Student_info{

    std::string name;

    double midterm ,final;

    std::vector<double> homework;

    bfd::cookiemapping::afdaf adf; 

    }

     3 成员函数

    使用::调用同名的非成员函数。::放在名字前,表示我们要使用这个名字的一个版本,但是这个名字不是任何对象的成员。

    double Student_info::grade() const{

    return ::grade(midterm,final,homework);

    }

    const对象只能调用const成员函数。

    一个函数是否设计成成员函数的原则:如果这个函数改变对象的状态,那么这个函数就应该成为这个对象的成员。

    成员函数在类定义中定义时,默认为内联函数。

     4 构造函数

    不带任何参数的构造函数是默认构造函数

    一个对象被创建时,发生的步骤:

    (1)系统分配内存,保存这个对象

    (2)根据构造函数的初始化列表,初始化这个对象

    (3)执行构造函数的函数体

    对于内置类型成员来说,构造函数中应该给他们提供值,否则,在当对象是局部变量时,内置成员变量的值是错误的(使用所占内存刚好含有的值)。

    例如,

    Student_info::Student_info():midterm(0),final(0){}

    name和vector不用赋值,因为string和vector会调用自身的默认初始化函数

    5 问题

    (1)为什么成员变量设置为私有?对象的使用者的创建者不是一个,是什么样的场景?

    设置成共有的 不利于类封装,会让客户端直接访问成员变量 这与c++的封装思想相悖。故对不允许客户直接操作的成员变量应设置为私有 并可提供 接口(成员函数)访问该变量

    (3)课后习题未作

  • 相关阅读:
    URL收藏
    web网站防攻击策略
    网络编程
    Tomcat
    UML学习
    大数据学习
    PHP学习
    SYNC CSDN
    在浏览器中打开本地程序
    内存管理工具,帮助检查内存泄露及野指针问题
  • 原文地址:https://www.cnblogs.com/catkins/p/5270465.html
Copyright © 2011-2022 走看看