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 &#