ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ Primer Plus学习笔记

2022-07-22 00:33:33  阅读:170  来源: 互联网

标签:name 对象 C++ String Plus new Primer 指针 构造函数


有关返回对象的说明

有几种返回方式可供选择

1指向对象的引用

2指向对象的const引用

3const对象

使用const引用的作用就是为了提高效率

 

返回指向非const对象的引用

两种常见的返回非const对象的情形是:

1.重载赋值运算符

2.重载与cout一起使用的<<运算符

 

指针和对象小结

1.使用常规表示法来声明指向对象的指针

String *glamour;

2.可以将指针初始化为指向已有的对象

String *first = &sayings[0]

3.可以使用new来初始化指针,这将创建一个新的对象

String * favorite  = new String(saying[choice]);

4.对类使用new将调用相应的类构造函数来初始化新创建的对象;

String *greep =new String ;

String *glop = new String("my my my");

String *favorite = new String(sayings[choice]);

5.可以使用->运算符通过指针访问类方法

if(saying[i].length <shortest->length())

6.可以对对象指针应用解除引用运算符(*)来获得对象

if(saying[i]<*first)

first = &sayings[i];

 

复习各种技术(总结+使用场景)

1.重载<<运算符

它和cout一起显示对象的内容时,请定义下面的友元运算符函数

ostream & operator<<(ostream &os,const c_name &obj)

{

os<<....;

return os;

}

 

2.转换函数

要将单个值转化为类类型,需要创建如下所示类构造函数

c_name(type_name value);

c_name为类名,type_name是要转换的类型的名称

要将类转换为其他类型 需要创建原型如下所示的类成员函数

operator type_name();

注意:在声明构造函数的时候使用关键字explicit,以防止被用于隐式转换

 

3.其构造函数使用new的类

(1)对于指向的内存是由new分配的所有类成员,都应在类的析构函数中对其使用delete,该运算符将释放分配的内存

(2)如果析构函数通过对指针类成员使用delete来释放内存,则每个构造函数都应当使用new来初始化指针,或将它设置为空指针。

(3)构造函数中要么使用new[],要么使用new,而不能混用。如果构造函数使用的是new[],则析构函数应当使用delete[];如果构造函数使用的是new,则析构函数应使用delete

(4)应定义一个分配内存的复制构造函数(拷贝构造函数),这样程序能将类对象初始化为另一个类对象,原型:className(const className &)

(5)应定义一个重载赋值运算符的类成员函数,其函数定义如下(c_pointer是c_name的类成员,类型为指向type_name的指针)

c_name &c_name::operator=(const c-name &cn)

{

  if(this == &cn)

       {

    return *this;

  }

  delete[]c_pointer;

  c_pointer = new type_name[size];

  return *this;
}

标签:name,对象,C++,String,Plus,new,Primer,指针,构造函数
来源: https://www.cnblogs.com/wcx1219932978/p/16504138.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有