信用网站一体化建设方案,wordpress php文件上传,div做网站排版,网站流量统计 设计1.拷贝函数的值拷贝#xff1a;
#include iostream
using namespace std;//构造函数的调用规则#xff1a;
//1,创建一个类#xff0c;C编译器会给每个类都添加至少3个函数
//默认函数(空实现)#xff0c;析构函数(空实现)#xff0c;拷贝函数(值拷贝)class Pers…1.拷贝函数的值拷贝
#include iostream
using namespace std;//构造函数的调用规则
//1,创建一个类C编译器会给每个类都添加至少3个函数
//默认函数(空实现)析构函数(空实现)拷贝函数(值拷贝)class Person {public:Person() {cout Person的默认构造函数调用 endl;}Person(int age) {cout Person的有参构造函数调用 endl;m_Age age;}Person(const Person p) {cout Person的拷贝构造函数调用 endl;m_Age p.m_Age;}~Person() {cout Person的析构函数 endl;}int m_Age;
};void test01() {Person p;p.m_Age 18;Person p2(p);cout p2的年龄为 p2.m_Age endl;}int main() {test01();system(pause);return 0;
}如果这个时候我们没有写拷贝函数这个时候编译器就会用它自己的拷贝函数eg
#include iostream
using namespace std;//构造函数的调用规则
//1,创建一个类C编译器会给每个类都添加至少3个函数
//默认函数(空实现)析构函数(空实现)拷贝函数(值拷贝)class Person {public:Person() {cout Person的默认构造函数调用 endl;}Person(int age) {cout Person的有参构造函数调用 endl;m_Age age;}// Person(const Person p) {
// cout Person的拷贝构造函数调用 endl;
// m_Age p.m_Age;
// }~Person() {cout Person的析构函数 endl;}int m_Age;
};void test01() {Person p;p.m_Age 18;Person p2(p);cout p2的年龄为 p2.m_Age endl;}int main() {test01();system(pause);return 0;
}// Person(const Person p) {
// cout Person的拷贝构造函数调用 endl;
// m_Age p.m_Age;
// }
//此时编译器做了一个值拷贝相当于它自己写了一个m_Age //p.m_Age;但是它只会进行值拷贝
//所以最后的输出里面没有 Person的拷贝构造函数调用2.如果我们写了有参构造函数编译器就不再提供默认构造依然提供拷贝函数
#include iostream
using namespace std;//构造函数的调用规则
//1,创建一个类C编译器会给每个类都添加至少3个函数
//默认函数(空实现)析构函数(空实现)拷贝函数(值拷贝)class Person {public:// Person() {
// cout Person的默认构造函数调用 endl;
// }Person(int age) {cout Person的有参构造函数调用 endl;m_Age age;}// Person(const Person p) {
// cout Person的拷贝构造函数调用 endl;
// m_Age p.m_Age;
// }
//此时编译器做了一个值拷贝相当于它自己写了一个m_Age p.m_Age;~Person() {cout Person的析构函数 endl;}int m_Age;
};//void test01() {
// Person p;
// p.m_Age 18;
//
// Person p2(p);
//
// cout p2的年龄为 p2.m_Age endl;
//
//}void test02() {Person p;
}int main() {
// test01();test02();system(pause);return 0;
}会报错原因是我们写了有参构造函数所以编译器不会提供默认构造函数但是我们自己没有写默认构造函数所以Person没有合适的默认构造函数可用。
下面证明编译器依然会提供拷贝构造函数
#include iostream
using namespace std;//构造函数的调用规则
//1,创建一个类C编译器会给每个类都添加至少3个函数
//默认函数(空实现)析构函数(空实现)拷贝函数(值拷贝)class Person {public:// Person() {
// cout Person的默认构造函数调用 endl;
// }Person(int age) {cout Person的有参构造函数调用 endl;m_Age age;}// Person(const Person p) {
// cout Person的拷贝构造函数调用 endl;
// m_Age p.m_Age;
// }
//此时编译器做了一个值拷贝相当于它自己写了一个m_Age p.m_Age;~Person() {cout Person的析构函数 endl;}int m_Age;
};//void test01() {
// Person p;
// p.m_Age 18;
//
// Person p2(p);
//
// cout p2的年龄为 p2.m_Age endl;
//
//}void test02() {Person p(28);Person p2(p);cout p2的年龄为 p2.m_Age endl;
}int main() {
// test01();test02();system(pause);return 0;
}3.如果我们写了拷贝构造函数编译器就不再提供其他普通构造函数
#include iostream
using namespace std;//构造函数的调用规则
//1,创建一个类C编译器会给每个类都添加至少3个函数
//默认函数(空实现)析构函数(空实现)拷贝函数(值拷贝)class Person {public:// Person() {
// cout Person的默认构造函数调用 endl;
// }// Person(int age) {
// cout Person的有参构造函数调用 endl;
// m_Age age;
// }Person(const Person p) {cout Person的拷贝构造函数调用 endl;m_Age p.m_Age;}
//此时编译器做了一个值拷贝相当于它自己写了一个m_Age p.m_Age;
// ~Person() {
// cout Person的析构函数 endl;
//
// }int m_Age;
};//void test01() {
// Person p;
// p.m_Age 18;
//
// Person p2(p);
//
// cout p2的年龄为 p2.m_Age endl;
//
//}void test02() {Person p;}int main() {
// test01();test02();system(pause);return 0;
}由于我们提供了拷贝构造函数编译器不再提供其他普通函数所以报错原因Person没有合适的默认构造函数可用。