C++ Primer Plus书之--C++ this指针和类作用域及作用域内枚举

this指针

this指针指向用来调用成员函数的对象(this被作为隐藏参数传递给方法), 也就是this能指向本类对象, 看一个例子, 比较两个Stock对象的total_val值, 谁的total_val值大, 就返回哪个对象.

// 第一个const表示返回一个const的引用
// 第二个const表示, 要显示的访问一个const引用对象
// 第三个const表示, 函数不会修改隐式的访问对象的值
const Stock& Stock::topval(const Stock & s) const
{
    // 这里的total_val实际是this->total_val的缩写
    if(s.total_val > total_val)
    {
        return s;   
    }
    // 由于this是指向本类对象的指针, 因此如果要返回本类对象可以用*this表示.
    // 返回类型为引用, 意味着返回的是调用对象本身, 而不是其副本
    return *this;
}

对象数组

声明对象数组的方法与声明标准类型数组相同:

Stock mystuf[4];

注意: 当程序创建未被显示初始化的类对象时, 总是调用默认构造函数, 也就是上述声明要求, Stock这个类要么没有显示的定义任何构造函数, 要么定义了一个显示默认构造函数(所有参数都有默认值).

如果类没有默认构造函数, 那么必须为每个元素调用构造函数:

const int STKS = 10;
Stock stocks[STKS] = {
    Stock("No1", 20, 20.5),
    Stock("No2", 30, 30.5),
    // 可以对不同元素调用不同的构造函数
    Stock()
};

上面这段代码只初始化了前三个元素, 对后七个元素使用的是默认的构造函数.

 

接下来看一个完整的例子:

// stock20.h
#ifndef STOCK20_H_
#define STOCK20_H_
#include <iostream>

class Stock
{
private:
    std::string company;
    int shares;
    double share_val;
    double total_val;
    void set_tot() {total_val = shares * share_val;}
    
public:
    // 这里有两个构造函数, 一个是默认构造函数, 一个是带参数的构造函数
    Stock();
    // 带有部分默认参数的构造函数
    Stock(const std::string & co, long n &#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值