在程序结束之前,共调用3个对象?
若example是已定义的类,在程序结束之前,共调用3个对象?若example是已定义的类,在程序结束之前,共调用3个对象? #include “exemple” main() {example x(0); x=5; x.print(); x=example(10); x.print(); } 我怎么只看出一个对象是example x(0)还有哪两个?
1。 example x(0); 处调用构造函数一次初始化x; 2。 x=5; 处编译器隐式调用构造函数example(5)一次初始化一个临时对象 赋值给x; 3。 x=example(10); 处显式调用构造函数example(10)一次初始化一个临时对象 赋值给x; 所以一共调用了3次对象。
回答补充:显式调用指代码编写者直接在代码中写出函数调用表达式,如 example x(0); 和x=example(10); 就是直接写出了构造函数的调用表达式。 隐式调用是指C++编译器对代码进行编译优化后在生成的执行代码中加入的 函数调用, 如C++编译器对 x=5;进行编译优化后会生成近似于x=example(5); 这样的代码,对构造函数进行一次调用。
注意,你这道题没有给出类example的定义,就很难给出一个标准答案,如果类example实现了const example& operator =(int nParam)运算符,则x=5;处 不会隐式调用构造函数,那就一共只调用了2次对象。
这样的出题不太严密。 你的C++还需要加强学习,给你推荐两本书-->和>。
x=5;这样也定义了,那个等号被重载了. x=example(10);这个当然也是了.
答://student.h #pragma once #include #include #include #include #include using...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>