2014 1016

1、Http和Https的不同

https是SSSL加密的

2、宏与内联函数的不同

      不同点:宏是在预编译期间进行字符串的替换操作的,而内联函数是在编译期间在函数被调用的地方插入函数的实现代码

3、

 

#include <iostream>
using namespace std;

class A{
public:
    A(){cout<<"A"<<endl;}
    A(A &a){cout<<"A_copy"<<endl;}
    ~A(){cout<<"~A"<<endl;}
};

class B{
public:
    B(A &AA):_AA(AA){cout<<"B_copy"<<endl;}//1
    B(){cout<<"B"<<endl;}
    ~B(){cout<<"~B"<<endl;}
private:
    A _AA;
};

int main(){
    A AA;
    B BB(AA);
    return 0;
}

image

第一行是因为:A AA构造了一个对象

第二行是因为构造函数的初始化成员列表调用的是A的拷贝构造函数(1处的_AA(AA))

第三行是因为B的拷贝构造函数

第四行析构的是BB

第五行析构的是BB中的_AA成员

第六行析构的是AA对象

 

class B{
public:
    B(){cout<<"B"<<endl;}
    ~B(){cout<<"~B"<<endl;}
private:
    A _AA;
};

int main(){
    B BB;
    return 0;
}

image

 

**************************************************************************************

为什么以下程序调用B(A AA)后调用的是AA的拷贝构造

#include <iostream>
using namespace std;

class A{
public:
    A(){cout<<"A"<<endl;}
    A(A &a){cout<<"A_copy"<<endl;}
    ~A(){cout<<"~A"<<endl;}
};

class B{
public:
    B(A AA){cout<<"B_copy"<<endl;}//1
    B(){cout<<"B"<<endl;}
    ~B(){cout<<"~B"<<endl;}
//private:
    //A _AA;
};

int main(){
    A AA;
    B BB(AA);
    return 0;
}

image

posted @ 2014-10-20 23:16  yexuannan  阅读(167)  评论(0编辑  收藏  举报