Geekband Week a 第一周作业遇到的问题

Geekband Week a 第一周作业遇到的问题1


本人刚接触C++,下面是写本周作业遇到的一些问题。作为自己的记录,也欢迎指正和讨论。

本周作业遇到的问题:

1.成员函数与带参内联函数的混淆:

class date
{
public:
    date (int y = 0,int m = 0, int d = 0) 
    : year(y) , month(m) , day(d)
    { }
    int get_year() const {return year;}
private:
    int year , month , day;
};

inline int
get_year(const date& x)
{
    return x.get_year();
 } 
 

如以上部分,定义date类后,在classbody内定义了get_year()函数,最初在操作符'>'函数内直接引用了get_year()函数,导致报错。
明确了成员函数自带this型指针以及成员函数的调用方式之后,在class body外定义了内联函数get_year(date& x) ,该函数以类date的引用为参数,作用域为全域。

2.this指针作为参数对类的data的访问方式:

既然在成员函数自带this指针参数,并指向调用该函数的类本身,那么对访问data的方式以下两种访问方式,哪一个更快呢?

inline bool
date::operator > (const date& x)
{
    int i = 0;
    if (year > x.year)
    // 1、直接访问data,与在class body内部书写成员函数一样
        i = 1;
    else if((this->year == x.year) && (this->get_month() > x.month))
        i = 1;    // 2、this指针访问data
    else if((this->year == x.year)&& this->get_month() == x.month&&(this->get_day() > x.day))
        i = 1;
    return i;
}

3.在classbody外定义常量成员函数的方法:
在函数声明后、分号前加 const

class date
{
public:
    date (int y = 0,int m = 0, int d = 0) : year(y) , month(m) , day(d)
    { }
    int get_year()const;
private:
    int year , month , day;
};

inline int
date::get_year()const
{
    return year;//get_year();
 } 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,096评论 6 13
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,533评论 1 51
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 19,998评论 0 50
  • 脂肪的功能; 1,主要作为热量储存;(是生物体内储存能量的物质并供给能量,1克脂肪在体内分解成二氧化碳和水并产生...
    初炼阅读 769评论 0 0