C++学习10

姓名:张立斐   学号:19020700001   学院:电子工程学院 

转自:https://blog.csdn.net/lvliang2017232003/article/details/86515420

【嵌牛导读】C++学习

【嵌牛鼻子】C++

【嵌牛提问】如何学习C++?

【嵌牛正文】

1.在析构函数中使用new来分配内存时,必须在相应的析构函数中使用delete来释放内存。使用new的类通常需要包含显示复制函数和执行深度复制的赋值运算符。(见下2)

2.StringBad sports("Spainshu leavea"); //StringBad 是一个类 调用的构造函数形式为:StringBad ( const char *s);

StringBad sailor=sports; //用一个对象初始化另一个对象,调用的构造函数形式为:

(1)StringBad ( const StringBad & st) {  //复制构造函数

num_strings++;

len=st.len; str=new char[len+1];  std::strcpy(str,st.str);  }

(2)还需要编写执行深度复制的类重载赋值运算符:

  StringBad & StringBad::operator=(const StringBAd & st)  {

  if (this==&st) return *this;

delete [] str; //释放旧的字符串

len=st.len;  str= new char [len+1];  std::strcpy(str,st.str);

return *this;  }

按值传递和返回对象,都调用复制构造函数。按引用传递时,将减少调用构造函数的时间。

3.静态数据,在类声明中声明,在类方法的文件中初始化。静态成员static,不管创建多少个对象,但只创建一个静态成员副本。

将成员函数声明为静态的,则不能通过对象调用静态成员函数,也不能使用this指针。静态成员函数声明放在公有声明部分,可以使用类名和作用解析运算符来调用它

4.如果类中包含了使用new初始化的指针成员,应当自行定义一个复制构造函数,以复制指向的数据,而不是指针,这叫深度复制。浅复制只复制指针信息,不会深入挖掘以复制指针引用的结构。

5.如果有多个构造函数,则都必须以相同的方式使用new,无参数的构造函数有new时:

String::String()

{  len=0;  str=new char[1];  str[0]='\0';  }

析构函数: String::~String() { delete  [ ] str; }

6. String *first=&saying[0];  //将指针初始化为指向已有的对象

  String * second=neew String(sayings[1]); //用new来初始化指针,创建一个新对象 删除:delete second; //将调用动态对象*second的析构函数。

7. char *buffer = new char [512];

  JustTesting *pc1,*pc2; //  JustTesting是一个类

pc1=new (buffer) JustTesting;// 此句为定位new运算符 

delete pc1; //不合法 需显示调用析构函数才能销毁对象: pc2->~JustTesting(); 

delete  [] buffer; //合法

pc2=new JustTesting ("Heap", 20); //常规new运算符  ...... delete pc2; //合法 ,将自动调用析构函数

8.C++11中空指针:NULL、0、nullptr

9. 对于被声明为引用和const 的类成员,在创建时应当成员初始化列表方式:(这种方法只用于构造函数)

(1)class Queue { private : .....  int items; .const int qsize;  }; 

  Queue::Queue(int qs) : qsize (qs) {  item=0; front =rear=NULL;  }  //

或者  Queue::Queue(int qs) : qsize (qs) , item(0) ,front (NULL), rear(NULL){ }

(2) class Agency{...}

  class Agent { private:  Agency &belong;.....};

  Agent::Agent(Agency &a): belong(a)  {.......} 

10. C++11允许在类定义中初始化。

class Queue

{ private: .....int item=0; ...  const int qsize=Q_SIZE;

};

但使用成员初始化列表的构造函数将覆盖相应的类内初始化。

————————————————

版权声明:本文为CSDN博主「lvliang2229」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/lvliang2017232003/article/details/86515420

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容