C++中的构造函数可以分为一下几种:
- 默认构造函数
- 初始化构造函数(有参数)
- 拷贝构造函数
- 移动构造函数(move和右值引用)
- 委托构造函数
- 转换构造函数
#include <iostream> using namespace std; class Student{ public: Student(){//默认构造函数,没有参数 this->age = 20; this->num = 1000; }; Student(int a, int n):age(a), num(n){}; //初始化构造函数,有参数和参数列表 Student(const Student& s){//拷贝构造函数,这里与编译器生成的一致 this->age = s.age; this->num = s.num; }; Student(int r){ //转换构造函数,形参是其他类型变量,且只有一个形参 this->age = r; this->num = 1002; }; ~Student(){} public: int age; int num; };
int main(){ Student s1; Student s2(18,1001); int a = 10; Student s3(a); Student s4(s3); printf("s1 age:%d, num:%d\n", s1.age, s1.num); printf("s2 age:%d, num:%d\n", s2.age, s2.num); printf("s3 age:%d, num:%d\n", s3.age, s3.num); printf("s2 age:%d, num:%d\n", s4.age, s4.num); return 0; } //运行结果 //s1 age:20, num:1000 //s2 age:18, num:1001 //s3 age:10, num:1002 //s2 age:10, num:1002
-
class Person { public: Person() :Person(1, 'a') {} //委托构造函数 Person(int i) : Person(i, 'a') {} //委托构造函数 Person(char ch) : Person(1, ch) {} //委托构造函数 private: Person(int i, char ch) :type(i), name(ch) {/*其他初始化信息*/} int type{ 1 }; char name{ 'a' }; };
- 默认构造函数和初始化构造函数在定义类的对象,完成对象的初始化工作
- 复制构造函数用于复制本类的对象
- 转换构造函数用于将其他类型的变量,隐式转换为本类对象
转载文章:https://interviewguide.cn/notes/03-hunting_job/02-interview/01-01-02-basic.html
标签:int,age,c++,Person,num,Student,构造函数 From: https://www.cnblogs.com/Explosion556/p/17363130.html