在C++ 中,建立一个父类或子类,都要考虑类的四个默认函数: 构造函数 析构函数 拷贝函数 赋值函数。
在C++中,有三种继承 public、protected、private,但有一个奇葩的关键字friend,有点打乱这些权限关系。
在C++中,任何类都有成员函数和成员变量;而构造函数只是成员函数而已;
最近看了很多视频教程,看着看着都想睡觉了;感觉不敲几行代码,运行一下是不行的。
下面是构造函数测试,其实也有函数重载内容:
#include <iostream> #define log(x) std::cout<<x<<std::endl/* 类、构造函数等 */
using namespace std;
class String{ public: const char* a; // 俩个字符指针 const char* b; int x,y; // 俩个整型变量 String(const char* str):a(str),b(str) //构造函数1,初始化列表实现的 { log("char构造函数"); }
String(int str):x(str),y(str) //构造函数2 { log("int构造函数"); } }; /* 测试mian */ int main(void) { String ri("1212"); // 函数重载,所以会找对应的构造函数 String ri1(30); log(ri.a); log(ri.b); log(ri1.x); ri.a = "== end =="; log(ri.a); cin.get(); // 暂停功能 }
执行结果:
当然构造函数也是可以无参的,在以类新建对像时,就不用传入参数;所以我们得出结论:
构造函数就是创建对像时,对成员变量进行初始化,如果配合new,则会申请内存空间;
时间:2021-11-09
构造用初始化列表:
/* C++初始化列表 */ class init_tab { public: init_tab(int a, int b, int c):x(a),y(b),z(c){} // 初始化列表 //protected: int x,y,z; // 数据 }; /* 测试mian */ int main(void) {
init_tab test1(3,5,6); log(test1.y); log(test1.x); log(test1.z); return 0; }
运行效果:
最后看一下OS的: