【C++ primer】12 类{主构造函数}

1、class 默认成员变量private,struct默认是public;


2、class Screen

{

public:

Screen& set( index,index ) const;

}

const 成员函数set中,this的类型是一个指向const对象的const指针,就是说,指针地址不可以改,内容也不可以改。

而非const函数,this指针地址不可以改,但是指向的内容可以改。


3、变量名字查找,先类类型,后全局;全局限定符::

<span style="font-size:14px;">int height;
class circle
{
	public:
		int height;
	private:
		int area()
			{
				return 4*::height;//全局height!
			}
}</span>

4.构造函数

作用:保证数据成员变量具有合适的初值。

构造函数名与类名相同,没有返回值。

构造函数不能申明为const;

1)Sales_item::Sales_item(const string &book):isbn(book), units_sold(0), price(33.0){ }  //显式初始化

2)Sales_item::Sales_item(const string& book)  //在isbn=book之前已初始化为空,book覆盖初值而已
{
isbn = book;
sold = 0;
price = 33.0;
}

不管成员是否在构造函数初始化列表中显式初始化,数据成员总是在初始化阶段初始化,而初始化发生在计算阶段之前!

常量以及引用变量,只能在初始化列表中进行初始化,不能赋值;

初始化顺序与初始化列表顺序无关,而是定义顺序。


简单程序:

#include <iostream>

using namespace std;

class param
{
public:
	param()
	{
		x = 10;
		cout << "param的默认构造函数!" << x << endl;
	}
	param(int i)
	{
		x = i;
		cout << "param的带参数的构造函数!"<< x << endl;
	}
	~param(){ cout << "param的析构函数!" << x << endl;}
	int get()
	{
		return x;
	}
private:
	int x;
	
};

class rect
{
public:
	rect()
	{
		s = 1000;
		cout << "rect的默认构造函数!"<< endl;
	}
	
	rect(int i,int j,int k):s(i),width(j),length(k)
	{
		cout << "rect的带参数的构造函数!"<< "面积是:" << width.get()*length.get() << endl;
	}

	~rect()
	{		
		cout <<	s << "rect的默认析构函数! " << endl;
	}

private:
	int s;
	param length;
	param width;
};

int main()
{
	rect a(100,200,300);
	
	return 0;	
}


运行结果:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值