Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41452
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 52
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-18 21:17
文章分类

全部博文(5)

文章存档

2016年(3)

2013年(2)

我的朋友

分类: C/C++

2016-02-23 21:50:41

c++文件的后缀(.h,.cpp.cc等,根据编译器不同而不同)


1.include的方式,include 或者include,会根据编译器不同而表现不同

2.header文件的格式规范

①防卫式声明

#ifndef _COMPLEX_H_

#define _COMPLEX_H_

#endif


②从上到下有3个部分组成

a.声明

b.类定义

c.类的成员函数定义


3.如何编写类?

①构造函数

重点:

a.构造函数重载(注意默认参数的问题!!!)

b.class initilization list要用上


②template模板

template

complex c1(1,2)


③inline关键字(只是告诉编译器尽量inline)


④access level

public   全局访问

private  只有friend对象和public函数可以访问

friend   friend可以使用对象的private数据,相同class的各个objects间互为friend。


⑤构造函数放在private的使用:单例singleton



⑥函数返回考虑考虑是否加const,如double real() const { return re;}

当使用者定义const对象的时候,如果double函数没有const,会报错


⑦参数传递要考虑是否是reference


4.操作符重载

①成员函数(this),如:+=

所有成员函数都会带着隐藏的对象this,+=作用在左边,因此作用在左操作数,因此左操作数为this

函数声明是的返回值是complex&,但return *this,这种写法是正确的。

传递者无需知道接受者是否以reference形式接收。即C++语言中间做了转换,即return值,但是接收return返回值的接收者根据自己需要接收,接收可以是reference或者是object。

就是说传递者只要传value,那么接受者可以根据需要进行接收,可以是value或者是reference,当然一般而已reference的时候拷贝更快(char除外)。


②非成员函数,如:+ -

c2=c1+c2,应该设计为非成员函数。

inline complex operator + (const complex& x, const complex& y)

+返回的是一个complex对象.

为什么不能返回的是reference,因为相加后必定有一个新的object,但这个object在函数作用域里面,是个局部变量(local object)。

局部变量不能在外面访问,在退出函数后的该变量的地址也是无效的,因此不能返回reference。

如果变量是在外面也可以访问,此时可以返回reference,如成员函数部分的例子!


重点1:操作符的连串使用,是返回为complex reference的原因!!

c3+=c2+=c1,那么+=操作后必须要返回complex类型的reference!!!

<<符号的重载,返回值必须为ostream&

ostream& operator << (ostream& os, const complex& x)

其中os参数变量不能加const,因为每一次<<都会修改os的状态!!


重点2:temp object 临时对象  typename();

阅读(2059) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~