各位佬,c++练习题,第一题A是对的和第二题D是错的是因为调用不算是使用吗?还是别的什么原因?
几个知识点:
(1)申明和定义的区别,申明只是函数头上那一行,不包括函数体,这个放在调用之前就可以了。
比如
//下面是声明
int add(int, int);
int main()
{
int i = add(1, 2);
}
//下面是定义
int add(int a, int b)
{
return a + b;
}
(2)函数里当然不能放入函数定义,比如
int main()
{
int add(int a, int b)
{
return a + b;
}
int i = add(1, 2);
}
这肯定不行
不知道你这个问题是否已经解决, 如果还没有解决的话:class A
{
public:
A(){ };
A( A & a ){
cout << " Copy constructor called " << endl;
}
};
void Func(A a1){}
int main(){
A a2;
Func(a2);
return 0;
}//输出: Copy constructor called
如果函数的返回值是类A的对象时,则函数返回时,A的复制构造函数被调用
class A
{
public:
int v;
A( int n ){ v = n; };
A( const A & a){
v = a.v;
cout << " Copy construtor called " << endl;
}
}
A Func(){
A b( 4 );
return b;
}
int main(){
cout << Func().v <<endl;
return 0;
}
//输出结果:
//Copy constructor called
//4
但是,对象间的赋值并不会导致复制构造函数被调用