C++ Primer Plus学习笔记


有关返回对象的说明

有几种返回方式可供选择

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;
}

原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/275947.html

(0)
上一篇 2022年7月22日 02:34
下一篇 2022年7月22日 02:35

相关推荐

发表回复

登录后才能评论