声明对象指针时会调用构造函数吗?

 我来答
小孤阿9
推荐于2019-10-04 · TA获得超过2.8万个赞
知道小有建树答主
回答量:90
采纳率:100%
帮助的人:1.3万
展开全部

声明对象指针时不会调用构造函数,指针只是个特殊的变数而已。

对象声明可以有两种:

a. 通过 类名 对象名;声明, 该声明后得到的对象已经隐式默认初始化了,分配了内存地址,并且已经存有了默认初始化后的类成员初始化值。例如 FirstStruct test; 之后就可以对FirstStruct的成员变量进行访问了: test.age.push_back(15);

b. 通过对象指针来声明,类名 *对象指针名; 通过指针申明的对象没有初始化,只是分配了一个指针名,并没有进行初始化,即没有分配内存空间,所以需要用 new 进行初始化操作。 FirstStruct *ptest; test->push_back(30);是错误的, 必须在声明对象后,new初始化, 对象指针可以用 new初始化,也可以用其他同类对象的引用来初始化,参见c。FirstStruct *ptest; ptest = new FirstStruct(); ptest->age.push_back(10);

c. 也可以将同一个类对象的引用 赋给指针对象,例如: FirstStruct test; FirstStruct *ptest = &test; 之后就可以通过指针ptest ->age.push_back(40); 直接对test对象的成员变量进行操作了。

d. 声明的指针的类型必须与所要指向对象/变量的地址内所存的类型一致。例如: bool *pbool = &test.age.push_back(15); 是错的,因为test.age是int型 vector, 而bool型的指针不能指向一个int型vector变量的地址,bool *pbool = &test.sexual;则可以,pbool就指向了test对象的bool型成员变量sexual的地址了.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式