C++编程思想笔记--引用与拷贝构造函数

一、C++和C中指针的区别

  C和C++指针的区别在于C++对类型的要求更强。C不允许随便把一个类型的指针赋值给另一个类型,但允许通过void*来实现。

bird* b;
rock* r;
void* v;
v=r;
b=v;

  C++不允许这么做,如果想把一种类型当作别的类型处理,必须显式的使用类型转换。

二、C++中的引用

  引用就像是能自动被编译器间接引用的常量型指针。任何引用必须和存储单元联系,
1.当引用被创建时,必须被初始化,
2.一个引用初始化为指向一个对象,就不能改变为另一个对象的引用
3.不可能有NULL引用,必须确保引用和一块合法的区域存储单元关联

引用常见的用处

1.作为函数的参数

  和传递指针有相同的作用,都可以对函数外的参数产生改变,但引用的语法更清晰。

2.作为返回值

  无论引用关联什么都应v存在,否则不知道指向哪个内存

3.使用常量引用作为参数

  在函数参数中使用常量引用,可以允许函数接受临时对象,

void f(int&) {}
void g(const int&) {}
int main()
{
// f(1); //error 不能接受临时变量
g(1);
}

4.指针引用

  在C中要改变指针本身函数必须这样声明

void f(int**);

  要传递参数必须取指针的地址

int i=47;
int* ip=&i;
f(&ip);
使用指针的引用,语法会清晰很多。

void f(int*& i) {i++;}
int* i=0;
f(i);
//增加的是指针本身,而不是指向的值
“`

三、拷贝构造函数

  在函数调用时,如果需要通过传值方式来传递和返回用户定义的类型时,需要用到拷贝构造函数。
  如果定义的类没有拷贝构造函数,那么值传递会采用C中原始的位拷贝概念,不能够保证对象的完整性(如果类定义中有静态成员可能会出问题,如果类中含有指针)
  拷贝构造函数X(X&)称X引用的X

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值