04 初始化列表

初始化列表 initialize list

在构造函数的括号后面加上 : 然后写上成员变量的名字,在括号里给出成员变量的初始值

A():p(0){ cout << "A::A()" << endl; } // 初始化列表

这个操作会早于构造函数的执行

#include<iostream>
using namespace std;

struct A{
    int i;
    int *p;
public:
    // A(){ p=0; cout << "A::A()" << endl; } 
    A():p(0){ cout << "A::A()" << endl; } // 初始化列表	
    ~A() { if (p) delete p; cout << "A::~A()" << i << endl; }
    void set(int ii) { i = ii; }
    void f() {  p = new int ; }
    void g(A* q) {cout << "A::g(), q->i=" << q->i << endl; }
};

int main(){
    A* p = new A[10];
    for ( int i =0; i<10; i++)
        p[i].set(i);
    A b;
    b.set(100);
    p[0].g(&b);
    delete[] p;
}
  • 可以初始化任何数据类型

  • 使用初始化列表初始化数据会早于构造函数的执行

    • 只做一件事,初始化

      而放在大括号里 需要两件事初始化和赋值

      如果是对象的话,放在大括号里面,对象会先调用default-constructor初始化。如果你没有default-constructor的话,则会报错

      #include<iostream>
      using namespace std;
      
      class B{
      public:
          B(int i){}
          // B(){}
      };
      
      struct A{
          int i;
          int *p;
          B b;
      public:
          A():p(0) { b=0; cout << "A::A()" << endl; } 
          ~A() { if (p) delete p; cout << "A::~A()" << i << endl; }
          void set(int ii) { i = ii; }
          void f() {  p = new int ; }
          void g(A* q) {cout << "A::g(), q->i=" << q->i << endl; }
      };
      
      int main(){
          A* p = new A[10];
          for ( int i =0; i<10; i++)
              p[i].set(i);
          A b;
          b.set(100);
          p[0].g(&b);
          delete[] p;
      }
      

类里面的所有成员变量都使用 初始化列表来做初始化,不要在构造函数里面做赋值

对象组合 composition

内存模型的复杂度

  • fully
  • by reference

对象里的对象 权限应该设置为private

### Ubuntu 22.04 初始化设置教程 #### 设置软件源 完成 Ubuntu 22.04 安装后,首要任务之一是配置合适的软件源。这有助于获取最新的安全更新和其他重要补丁。编辑 `/etc/apt/sources.list` 文件来指定国内镜像站点可以加快下载速度并提高稳定性[^1]。 ```bash sudo nano /etc/apt/sources.list ``` 建议替换默认的 `archive.ubuntu.com` 和其他官方地址为中国科学技术大学、阿里云等提供的镜像站。 #### 更新系统补丁 保持操作系统处于最新状态对于维护其安全性至关重要。通过运行以下命令可实现这一点: ```bash sudo apt update && sudo apt upgrade -y ``` 此过程会检查现有包列表中的更改,并安装所有可用的安全性和常规更新。 #### 配置网络连接 确保互联网接入正常工作非常重要;无论是有线还是无线方式都需要测试连通性。如果遇到问题,则可能需要调整网卡驱动程序或修改 NetworkManager 设置以适应特定硬件环境。 #### 增强服务器安全性 针对新部署的服务端实例,在首次登录之后应当立即采取措施加强防护等级。具体做法包括但不限于:禁用 root 用户远程登陆权限、启用防火墙服务以及定期变更 SSH 访问密钥等操作[^2]。 #### 安装常用工具集 为了便于日常管理和开发活动开展,通常还需要额外装载若干实用型应用程序。例如文本编辑器 Vim、网络诊断辅助 Net-Tools 及远程管理必备 OpenSSH Server 组件均可以通过 APT 包管理系统快速获得并激活使用许可权[^3]: ```bash sudo apt install -y net-tools vim openssh-server ``` 以上即为 Ubuntu 22.04 LTS 版本的基础设定流程概览,按照上述指导逐步实施能够有效保障平台初期运作顺畅无误的同时也为将来更复杂的定制化需求打下良好基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值