构造函数和析构函数

Stock hot={"sukie's autos,Ink",200,50.25};

因为数据部分的访问状态是私有的,程序不能访问数据成员。


创建Stock的构造函数,由于需要为Stock提供3个值,因此应为构造函数提供3个参数值,程序员可能指向设置company成员,而其他的设置为0;使用默认参数完成

声明如下:

Stock (const char* co,int n=0,double pr=0.0);

构造函数的原型和函数头虽然没有返回值,但也没有声明为void类型。

程序声明对象时,将自动调用构造函数。

Stock::Stock (const char* company,int shares,double share_val)
{
	...
}
这是错误的,构造函数的参数表示的不是类成员,而是赋值给类成员的值。因此参数名不能与类成员相同。


使用构造函数

Stock food=Stock("Word Cahhage",250,1.25);
Stock garment("Furry Mason",50,2.5);
Stock *pstock=new Stock("Electrostock",18,19.0);

第一种方式是显示的调用构造函数;

第二种方式是隐士的调用构造函数;

第三种方式,对象的地址付给pstock指针,这种情况下,对象没有名称,但可以使用指针来管理对象。


默认构造函数

默认构造函数是在未提供显示的初始化值时,被用来创建对象的构造函数。 Stock Stock1;

当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数。为类定义了构造函数后,程序员就必须为他提供默认构造函数。

有两种方式定义默认构造函数  给已有的构造函数提供参数提供的默认值,通过重载定义一个没有参数的构造函数。


const成员函数

const Stock land=Stock("Kludgehorn");
land.show();

对于目前的C++来说,编译器将拒绝第二行,因为show()的代码无法保证调用对象不被修改。

保证函数不会修改调用对象,c++的解决办法是在const关键字放在函数的括号后面

void show()const;

this指针

const Stock & Stock::topval(const Stock & s)const
{
	if(s.total_val>total_val)
		return s;
	else
		return *this;
}

调用stock1.topval(stock2)的时候 s是 stock2的别名,但stock1 没有别名。C++解决这种问题的方法是,使用称为this的特殊指针,this指针指向调用成员函数的对象,这样

stock1.topval(stock2)时,将this设置为stock1的对象的地址。一般来说,所有类的方法都把this设置为调用它的对象的指针。如果方法血药引用整个调用对象,则可以使用表达式*this。要返回的不是this,this是对象的地址不是对象本身,*this 作为调用对象的别名。返回类型为引用意味着返回的是调用对象本身,而不是其拷贝。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值