<C++程序设计>指针,引用,构造和虚构函数,复制构造函数

指针

pta = &a 通过pta可以找到a的地址

我们将存放地址的变量称之为指针变量,这里的地址就是指针,指针也是数据类型 *是指针类型变量的标志符号

定义一个指针变量系统为该指针分配一定大小的内存,在C++中,每个指针变量的大小为8字节

int a,*pta;//先定义变量 pta = &a;

pta = &a; 不可写成 *pta = &a;

*pta并不表示指针变量pta,而表示pta指向的变量a,指针变量与指针变量所指向的变量是完全不同的概念

&变量名 //获取变量的内存地址

char name[50];

name是字符数组,name的首地址也就是&name[0]

char str[81],*pstr;

str ="abcd";数组名是常量指针,不能被赋值

Template <calss T> class指某种类型(char ,int ,struct)

指针:指向变量的地址

程序运行时,函数会占有连续的内存空间,函数名就是内存空间的起始地址

int &r = n; //r引用了n,r的类型就是int &,某个变量的引用相当于这个变量的别名

int &r=n; //r引用了n,n就是r,r就是n

引用的概念:

1.一定要初始化成引用某个变量

2.初始化后它就一直引用该变量,不再引用别的变量(从一而终)

3.引用只能引用变量不能引用常量和表达式

int n1,n2;

swap(n1,n2);

Void swap(int &a,int &b){

Int tmp;

tmp =a;

a=b;

b=tmp;

}

常引用,定义引用时,前面加const关键字,即为“常引用”

const int &r = n; //r的类型是const int &,不能通过常引用去修改其引用的内容

Const int &r =n; r=200;//编译错

对象的大小 = 所有成员变量的大小之和

CRetangle r1,r2;

用法1:对象名.成员名 r1.w =5;

用法2:指针->成员名 CRetangle *p1 =&r1; //定义指针p1指向对象r1的首地址 p1->w =5;

用法3:引用名.成员名 CRetangle r2; CRetangle &rr =r2; rr.w =5;

类就是自己定义的数据类型

new出来对象的返回值是指针(*)

CSample *array = new CSample[2];

delete []array;//动态创建的对象要用delete删除

有*说明是指针数组,不是对象数组

Test *pArray[3];//不会导致对象的生成,是一个指针就不是对象,不会引发对象的生成

对operator = 返回值类型的讨论,void好不好?

考虑a =b =c; 等价于 a.operator = (b.operator= (c));

只有返回一个引用时,才可以作为下一个函数作用的对象

一个函数的返回值如果它不是引用的话,我们是不能把函数的返回值写在“=”左边的

构造和虚构函数

构造函数:名字和类名相同,可以有参数,不能有返回值

对象占用的存储空间是不是构造函数分配的?构造函数是在对象已经占用的存储空间做一些初始化的工作,如果把对象比作房子,构造函数不是盖房子只是进行装修

定义时没写构造函数,编译器会默认生成一个无参的构造函数

为什么需要构造函数?

1.执行必要的初始化工作

2.程序没有初始化就使用会导致报错

new出来对象的返回值是指针(*)

CSample *array = new CSample[2];

delete []array;//动态创建的对象要用delete删除

有*说明是指针数组,不是对象数组

Test *pArray[3];//不会导致对象的生成,是一个指针就不是对象,不会引发对象的生成

类就是自己定义的数据类型

复制构造函数

为string编写复制构造函数的原因,防止调用默认构造函数浅copy导致内存空间被多次释放的问题
String::string(String &s){

if(s.str)

{

str = new char[strlen(s.str) +1];

strcpy(str,s.str);

}

}



CArray a;

for(int i=0;i<5;i++)

a.push_back(i);

a[3] = 100;

CFArray a4(a);//a4是用复制构造函数初始化的,a4是a的复制品,a4和a的内容存储在不同的内存空间

派生类对象的体积 = 基类对象的体积 +派生类对象自己的成员变量的体积 ,派生类对象包含着基类对象,积累对象存储的位置位于派生类对象新增的成员变量之前

class cDog;

Class cMaster {

cDog dogs[10];

}

Class cDog{

cMaster m;

}

循环定义计算不出体积大小,为了避免循环定义,为“业主”类设置一个“狗”类的对象指针数组

class cMaster{

cDog *dogs[10];//10个元素的指针数组,每个元素都是一个指针,字节数就是40个字节

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

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,685评论 0 38
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,745评论 0 3
  • 这个不错分享给大家,从扣上看到的,就转过来了 《电脑专业英语》 file [fail] n. 文件;v. 保存文...
    麦子先生R阅读 6,540评论 5 24
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,487评论 1 51
  • 仅以此文记录纯粹自研日记App 吾刻此时 的诞生,优化,推广历程。 算是一个老码农对自己多年码农生涯的一个总结和交...
    大白护法阅读 268评论 0 0