木子剑
生命不熄,学习不止!

在C++ 中,建立一个父类或子类,都要考虑类的四个默认函数:  构造函数   析构函数  拷贝函数  赋值函数

在C++中,有三种继承  publicprotectedprivate,但有一个奇葩的关键字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的:

 

posted on 2021-10-22 22:28  木子剑  阅读(76)  评论(0编辑  收藏  举报