C++学习笔记1 简介class,构造函数

class complex
{
    public:
	complex	(double r = 0, double i = 0)
	:	re(r), im(i)
	{}                          ----------------------------------------------------------------------- |
	complex& operator += (const complex&);         //这是一个函数的声明                   |---函数若在class body内定义完成,便自动成为inline候选人                                                              
	double real () const {return re;}    ----------------------------------------------------- |
	double imag () const {return im;}    --------------------------------------------------- |                                                                
    private:
	double re, im;
	friend complex&  _doapl (complex*, const complex&);
};

{
complex  c1(2, 1);
complex  c2;
}
//访问级别
class complex
{
    public:                                                                              //函数类的东西是大家要用的,放到外面
	complex	(double r = 0, double i = 0)
	:	re(r), im(i)
	{}                      
	complex& operator += (const complex&);         //这是一个函数的声明                   
	double real () const {return re;}    
	double imag () const {return im;}                                                        
    private:                                                                            //数据类的东西放到private里,进行封装
	double re, im;
	friend complex&  _doapl (complex*, const complex&);
};

//这是对的
{
	complex c1(2, 1);
	cout << c1.real();
	cout << c1.imag();
}

//这是错的
{
	complex c1(2, 1);
	cout << c1.re;
	cout << c1.im;
}



//构造函数
class complex
{
    public:
	complex	(double r = 0, double i = 0)                   // default argument 默认实参
	:	re(r), im(i)                                                //	 initialization list 初值列,初始列
	{}                      
	                                                                                //complex () : re(0), im(0) {}    		这样重载是错误的,因为上面的构造函数给出了默认实参,如果有complex c1或是complex c1(),函数不知道该调用谁
	complex& operator += (const complex&);           //这是一个函数的声明                   
	double real () const {return re;}                             //如果public内的函数不改变数据内容,记得加const!!!否则如果下面出现const complex c(2, 1); cout c.real(); 编译时不通过的,因为既然class内没有加const,就说明complex.real是可以改变的,但是又用const修饰了c,就代表c.real是不能改变的,编译器很矛盾啊
	double imag () const {return im;}                                                        
    private:
	double re, im;
	friend complex&  _doapl (complex*, const complex&);
};

{
complex  c1(2, 1);
complex  c2;
}

//构造函数是可以放到private里的,例如下面这个例子
/*
	Singleton (单例,单体)
class A{
public:
	static A& getInstance();
	setup()  {...}
private:
	A();
	A(const A& rhs);
	...
};

A&  A::getInstance()
{
	static A a;
	return a;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值