C++面向对象入门(七)拷贝构造函数调用时机
C++中类的拷贝构造函数调用的时机
1,使用已创建的对象创建新的对象
2,对象已值传递的方式作为函数参数
3,函数返回值为局部对象
#include <iostream> #include <string> using namespace std; class Rider{ private: string name; public: string getName(){ return name; } Rider(){ cout << "Rider类无参构造函数调用" << endl; } Rider(string name){ cout << "Rider类有参构造函数调用" << endl; this->name = name; } /** * 拷贝构造函数调用时机 * 1,使用已创建的对象创建新的对象 * 2,对象以值传递的形式作为函数的参数 * 3,函数返回值为局部对象 * @param rider */ Rider(const Rider& rider){ cout << "Rider类拷贝构造函数调用" << endl; name = rider.name; } ~Rider(){ cout << "Rider类析构函数调用" << endl; } }; void func1(Rider rider); Rider func2(); /** * 使用已创建的对象创建新的对象 */ void test1(){ Rider r1("zero one"); Rider r2(r1); } /** * 对象以值传递的形式作为函数的参数 */ void test2(){ Rider r1("thousand"); func1(r1); } /** * 3,函数返回值为局部对象 */ void test3(){ Rider r1 = func2(); cout << "Adderss of Rider r1 is " << (int)&r1 << endl; } Rider func2() { Rider r1 = (string)"thunder"; cout << "Adderss of Rider r1 is " << (int)&r1 << endl; return r1; } void func1(Rider rider) { cout << "函数func1调用" << endl; } int main() { // test1(); // test2(); test3(); system("pause"); return 0; }
路漫漫其修远兮,吾将上下而求索。