当前位置: 首页 > news >正文

C++类和对象:初始化列表、static成员和友元

目录

一. 初始化列表

1.1 对象实例化时成员变量的创建及初始化

1.2 初始化列表

1.3 使用初始化列表和在函数体内初始化成员变量的效率比较

1.4 成员变量的初始化顺序

1.5 explicit关键字

二. static成员

2.1 static属性的成员变量

2.2 static属性的成员函数

三. 友元

3.1 友元函数

3.2 友元类


一. 初始化列表

1.1 对象实例化时成员变量的创建及初始化

以演示代码1.1中的日期类Date为例,Date类中有一个用户显示定义的构造函数,来实现在类实例化时对成员变量赋初值。但是,成员变量并不是在构造函数的函数体内部进行创建的,在进入构造函数的函数体内部之前,成员变量会先被给一个随机的值,然后到构造函数内部改变这个随机的值来让成员变量初始化为用户希望的值。

因此,我们可以认为,Date成员变量是先被创建出来(不进行初始化),然后在被赋初值的。

演示代码1.1:

class Date
{
public:Date(int year, int month, int day){_year = year;   //进入函数体内部时成员变量已被创建_month = month;_day = day;}
private:int _year;int _month;int _day;
};

1.2 初始化列表

先将成员变量创建出来,再初始化,相比于创建时直接初始化,效率相对较低,而且,对于引用、具有const属性以及没有默认构造函数的自定义类型成员变量,其必须在定义创建的同时完成初始化。因此,在函数体内部初始化成员变量就有其局限性。

为了实现在定义创建成员变量的同时进行初始化,C++引入了初始化列表。其语法格式为:以一个冒号开始(冒号在函数声明的后面),以逗号分隔成员变量,每个成员变量后面跟一个括号表示被初始化的值。

演示代码1.2通过初始化列表,实现了对日期类三个成员变量的初始化。

演示代码1.2:

class Date
{
public:Date(int year = 1, int month = 1, int day = 1)//初始化列表: _year(year), _month(month), _day(day){}
private:int _year;int _month;int _day;
};

注意,下面三种类型的成员变量只能采用初始化列表进行初始化:

  1. 引用类型成员变量。
  2. 具有const属性的成员变量。
  3. 没有默认构造函数的自定义类型成员变量。

演示代码1.2:(三种只能使用初始化列表的成员变量的初始化)

class A
{
public:A(int a):_a(a){}private:int _a;
};class B
{
public:B(A& a, int& ref)//没有默认成员函数的内置类型、引用以及const属性成员变量//只能用初始化列表初始化: _a1(a), _ref(ref), _n(10){}private:A _a1;   //没有默认成员函数的内置类型int& _ref;  //引用const int _n;  //const属性成员变量
};

1.3 使用初始化列表和在函数体内初始化成员变量的效率比较

演示代码1.3创建一个含有默认构造函数的类AA,在类A中包含类型为AA的自定义成员变量,先后显示定义两种不同形式的默认构造函数:一是在函数体内部初始化自定义成员变量,二是在初始化列表初始化自定义类型成员变量。

为了方便观察两种情况下构造函数、拷贝构造函数和赋值运算符重载函数分别调用了几次,函数应输出相关信息。运行代码,可以看到,如果在函数体内部初始化,需要调用两次调用构造函数、一次调用赋值运算符重载函数,如果使用初始化列表初始化,仅需要调用构造函数和拷贝构造函数各一次。对于较大的自定义类型成员变量,使用初始化列表可以显著提高程序运行效率。

这是因为,使用初始化列表在成员变量被定义出来的同时完成了初始化,而在函数体内部初始化则将成员变量的定义和初始化拆分为两个步骤。

演示代码1.3:

class AA
{
public:AA(int a = 1, int b = 2)  //构造函数{cout << "AA(int a, int b)" << endl;_a = a;_b = b;}AA(const AA& aa)  //拷贝构造函数{cout << "AA(AA& aa)" << endl;_a = aa._a;_b = aa._b;}AA& operator=(const AA& aa)  //赋值运算符重载函数{cout << "AA& operator=(const AA& aa)" << endl;_a = aa._a;_b = aa._b;return *this;}private:int _a;int _b;
};class A
{
public://函数体内初始化//A(int c, int d, const AA& aa)  //这里会调用初始化列表创建_aa,但给随机初值//{//	_c = c;//	_d = d;//	_aa = aa;//}//初始化列表初始化A(int c, int d, const AA& aa): _c(c), _d(d), _aa(aa){}private:int _c;int _d;AA _aa;
};int main()
{AA aa1;A a1(10, 20, aa1);return 0;
}
图1.1  在函数体内初始化(左)和采用初始化列表初始化(右)时程序运行结果

总结:对于有默认构造函数的自定义类型成员变量,可以在函数体内部初始化,也可以使用初始化列表初始化,但为了提高程序运行的效率,一般建议采用初始化列表初始化。

1.4 成员变量的初始化顺序

成员变量初始化的顺序与声明顺序一致,与初始化列表的顺序无关。如演示代码1.4所示,虽然初始化列表中_a1在前_a2在后,但是_a2依然先被初始化,_a1初始化后的值并没有被赋给_a2。因此,程序的运行结果并不是1  1,而是1  随机值 。

建议:成员变量的声明顺序与初始化列表的顺序保持一致。

演示代码1.4:

class AA
{
public:AA(int a1 = 10, int a2 = 20):_a1(1), _a2(_a1)   //按照声明顺序,先初始化_a2再初始化_a1{}void Print(){cout << "_a1 = " << _a1 << endl;cout << "_a2 = " << _a2 << endl;}private:int _a2;int _a1;
};int main()
{AA aa(1,1);aa.Print();return 0;
}
图1.2  演示代码1.4的运行结果

1.5 explicit关键字

如果一个构造函数只有一个参数,或者除了第一个参数外每个参数都有默认的缺省值,那么,就可以通过隐式类型转换来实现对象的实例化。

演示代码1.5定义了一个类Year,通过Year y1 = 2023,实现通过隐式类型转换完成对象实例化。但是,某些时候我们不希望这种隐式类型转换的发生,C++为此提供了一个关键字explicit,在函数声明之前添加explicit,即可禁止这种隐式类型转换。

演示代码1.5:

class Year
{
public://函数前加explicit,禁止隐式类型转换explicit Year(int year = 2023);void Print();private:int _year;
};Year::Year(int year)  //构造函数: _year(year)
{cout << "Year(int year = 2023)" << endl;
}void Year::Print()
{cout << _year << endl;
}int main()
{Year y1(2020);//Year y2 = 2023;   //存在隐式类型转换y1.Print();//y2.Print();return 0;
}

二. static成员

2.1 static属性的成员变量

  • 静态(static)成员变量属于整个类,并非单独属于某个类对象,而是所有类对象共享。
  • 必须在类外部定义static成员变量和给定初始化值,在类内部只是声明static成员变量。

通过static成员变量,可以实现统计一个类被实例化的次数。如演示代码2.1所示,在类A中定义了一个static成员变量_s_count,每当构造函数或拷贝构造函数被调用时,执行++_s_count操作,表示创建了一个类对象。运行演示代码2.1,_s_count的值为3,表示进行了3次对象实例化,调用构造函数创建对象a1第一次、调用构造函数创建对象a2第二次、调用f()函数传参时拷贝构造形参第三次。

注意:static属性的成员变量存储在静态区,在使用sizeof计算类或类对象大小时,static成员不包含在其中。

演示代码2.1:(统计类实例化次数)

//统计类对象总共被创建的次数
//构造函数和拷贝构造函数都会创建类对象
class A
{
public:A(int a = 5)   //构造函数: _a(a){cout << "A(int a = 5)" << endl;++_s_count;}A(A& a)   //拷贝构造函数: _a(a._a){cout << "A(A& a)" << endl;++_s_count;}//非静态成员函数int GetSumCount(){return _s_count;}private:int _a;static int _s_count;
};int A::_s_count = 0;   //初始化静态成员变量void f(A a)
{ }int main()
{A a1;A a2 = 1;f(a1);//通过对象调用函数获取_s_count的值cout << "_s_count = " << a1.GetSumCount() << endl;   return 0;
}
图2.1 演示代码2.1的运行结果

2.2 static属性的成员函数

static属性的成员函数严格来说并不能算是类的成员函数,其没有this指针,不能访问非static属性的成员变量或调用非static属性的成员函数。

静态成员函数有两种访问方式:(1)对象名.函数名(参数列表)、(2)类名::函数名(参数列表)

  • static成员也受访问限定符的限制,不能在类外部访问private和protect属性的static成员。
  • 虽然静态成员函数不能调用非静态成员函数,但是非静态成员函数可以调用静态成员函数。
class A
{
public:static void GetNum();   //静态成员函数private:int _a1 = 10;static int _a2;
};int A::_a2 = 20;   void A::GetNum()
{//cout << _a1 << endl;   //_a1为非静态成员变量,静态成员函数不能访问cout << "_a2 = " << _a2 << endl;
}int main()
{A a;A::GetNum();  //通过类名调用static属性函数A().GetNum();   //通过对象调用static属性函数,A()为匿名对象return 0;
}

三. 友元

友元可以分为友元函数和友元类。有一点要事先声明:友元是一种严重破坏封装的行为,一般建议友元要少用慎用。

3.1 友元函数

对于一个类中的private或protect属性成员,全局函数不能访问它们,但是,如果我们将某个全局函数声明为类的友元函数,那么这个全局函数就可以不受访问限定符的约束,随意访问类中的成员变量和成员函数。

友元函数的声明形式:friend 返回类型 函数名(参数列表)

演示代码3.1展示了友元函数的定义和使用,在类A中声明Print为A的友元,则全局函数Print可以访问A的私有属性成员变量并输出其值。这里还有一点需要注意:友元函数并不是某个类的成员函数,它是属于全局的。

演示代码3.1:

class A
{friend void Print(A& a);   //声明Print为A的友元
public:A(int a1 = 10, int a2 = 20)  //构造函数: _a1(a1), _a2(a2){}private:int _a1;int _a2;
};void Print(A& a)
{cout << "_a1 = " << a._a1 << endl;cout << "_a2 = " << a._a2 << endl;
}int main()
{A a;Print(a);  //Print为类A的友元return 0;
}
图3.1 演示代码3.1的运行结果

3.2 友元类

如果定义一个类A为类B的友元,那么这个类B中的任意一个成员函数就可以访问类A中的private或public属性成员。需要注意的是,友元类没有传递性和交互性,即:

  • 如果B是A的友元,C又是B的友元,不能认为C就是A的友元。
  • 假设B是A的友元,B可以访问A的非公有属性成员,我们也不能认为A是B的友元,即一般不能在类A中访问类B的非公有属性成员。

友元类的声明方式:friend class 类名

演示代码3.2定义了一个日期类Date和一个时间类Time,声明Date类是Time类的友元,那么,我们就可以在Date类中定义一个SetTimeOfDay函数,来设置Date类的Time类型成员变量。进入调试界面,打开监视窗口,看到Time类型成员_t的每个成员变量的值都依据调用SetTimeOfDay时传递的参数改为了12。

演示代码3.2:

class Time
{friend class Date;  //友元类声明public:Time(int hour = 1, int minute = 1, int second = 1): _hour(hour), _minute(minute), _second(second){}private:int _hour;int _minute;int _second;
};class Date
{
public:Date(int year = 2023, int month = 3, int day = 2)  //构造函数: _year(year), _month(month), _day(day){}//Date类的成员函数实现对Time类非公有属性成员的访问void SetTimeOfDay(int hour, int minute, int second){_t._hour = hour;_t._minute = minute;_t._second = second;}private:int _year;int _month;int _day;Time _t;
};int main()
{Date d;  //使用默认值完成类实例化d.SetTimeOfDay(12, 12, 12);  //时间设为12时12分12秒return 0;
}
图3.2 演示代码3.2

 

相关文章:

C++类和对象:初始化列表、static成员和友元

目录 一. 初始化列表 1.1 对象实例化时成员变量的创建及初始化 1.2 初始化列表 1.3 使用初始化列表和在函数体内初始化成员变量的效率比较 1.4 成员变量的初始化顺序 1.5 explicit关键字 二. static成员 2.1 static属性的成员变量 2.2 static属性的成员函数 三. 友元 …...

Windows 11 安装 Docker Desktop

Windows 环境安装 WSL2 WSL 简介 WSL 全称是 Windows Subsystem for Linux &#xff0c;适用于 Linux 的 Windows 子系统&#xff0c;可让开发人员按原样运行 GNU/Linux 环境&#xff0c;包括大多数命令行工具、实用工具和应用程序&#xff0c;且不会产生传统虚拟机或双启动设…...

设计模式-第6章(工厂模式)

工厂模式简单工厂实现工厂模式实现简单工厂 VS 工厂方法商场收银程序再再升级&#xff08;简单工厂策略装饰工厂方法&#xff09;工厂方法模式总结简单工厂实现 在简单工厂类中&#xff0c;通过不同的运算符&#xff0c;创建具体的运算类。 public class OperationFactory {pu…...

【JAVA】线程和进程

&#x1f3c6;今日学习目标&#xff1a;线程和进程 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰本期期数&#xff1a;第三期 &#x1f389;专栏系列&#xff1a;JAVA 线程和进程前言一、进程与线程1.进程2.线程二、线程的创建2.1 继…...

移动app安全测试工具好物分享

移动互联网时代&#xff0c;我们的生活和工作深受移动app的影响。随着移动app的广泛应用&#xff0c;安全问题成为人们最关注的话题之一。移动app安全除了和软件开发密不可分之外&#xff0c;软件测试的作用也是不容忽视的。移动app安全测试是指测试人员利用各种测试手段验证Ap…...

原生微信小程序引入npm和安装Vant Weapp

目录一、引入npm安装Vant Weapp1、引入npm2、安装Vant Weapp3、修改 app.json4、修改 project.config.json二、构建npm一、引入npm安装Vant Weapp 环境&#xff1a;Windows10 开发工具&#xff1a;微信开发者工具 本地环境&#xff1a;已安装过node.js 1、引入npm cmd进入到你…...

ChatGPT文章自动发布WordPress

WordPress可以用ChatGPT发文章吗&#xff1f;答案是肯定的&#xff0c;ChatGPT官方有提供api接口&#xff0c;多以目前有很多的SEO工具具有自动文章生成自动发布的功能&#xff0c;使用SEO工具&#xff0c;我们可以通过疑问词和关键词进行文章生成&#xff0c;并定时发布到我们…...

vue项目使用watch监听器监听数据变化

vue项目使用watch监听器监听数据变化 1.概述 在开发项目中&#xff0c;有些场景是当用户点击某个按钮后改变某个属性的值&#xff0c;这个值改变时需要触发事件做一些事情。属性值什么时候改变是没法提前判断的&#xff0c;因此需要有个监听的角色&#xff0c;当监听到值改变…...

动态规划(背包问题)

动态规划 文章目录动态规划一、背包问题一、01背包二、完全背包问题三、多重背包问题四、分组背包问题一、背包问题 一、01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xf…...

04741自考计算机网络原理最详细汇总

04741自考计算机网络原理知识点总结 引言 第一章 计算机网络概述 1.计算机网络基本概念与网络结构 1.1 计算机网络的概念; 1.2 计算机网络结构 1.3 数据交换技术 1.4 计算机网络性能 1.5 计算机网络体系结构 1.6 计算机网络与因特网发展简史 第二章 网络应用 2.1 网络应用体系…...

MySQL 入门学习笔记(二) 基本操作

MySQL 入门学习笔记(二) 数据库和表的基本操作 我们把一些表的集合称之为数据库,一个服务器中可以存在多个数据库.每个数据库中包含多个表,每个表都有一个名字作为标识,数据表则包含带有数据的记录. PS:SQL 语句对大小写不敏感. 操作数据库命令 在 MySQL 命令中,数据库用DAT…...

【Linux】理解文件系统

文章目录理解文件系统了解磁盘结构inode理解文件系统 了解磁盘结构 磁盘是计算机中的一个 机械设备 这个磁盘的盘片就像光盘一样,数据就在盘片上放着, 但是光盘是只读的,磁盘是可读可写的 机械硬盘的寻址的工作方式: 盘片不断旋转,磁头不断摆动,定位到特定的位置 我们可以把…...

Java如何String字符串带括号转成List

问题现象 今天在做一个需求&#xff1a;将存入数据库中的数据读到后解析成list遍历分析 数据格式&#xff1a; "[1677660600000, 1677660900000, 1677661200000]" "[5, 4, 4,3,2&#xff0c;0,0]" 我一开始想到的就是使用逗号分割即可 结果变成了这样的…...

react 使用 mqtt

也许很多人都好奇这个mqtt是什么东西&#xff0c;其实在互联网上可能不会使用到它&#xff0c;它是物联网上的东西&#xff0c;也是一种通信协议跟websocket。但它也能在浏览器跟服务器上跑&#xff0c;它的底层实现也是封装了websocket。 MQTT MQTT是一个客户端服务端架构的发…...

W25Q256被写保护如何修改

W25Q256被写保护如何修改1、 W25Q256数据读不到1.1 打印的寄存器的值1.2 可能原因1.3 解决办法1.4 用到的函数1、 W25Q256数据读不到 能够正确的读到ID&#xff0c;但是读到的数据不正确 1.1 打印的寄存器的值 0x2 BUSY &#xff1a;只读&#xff0c; 指令正在执行 WEL (1) &…...

论文投稿指南——中文核心期刊推荐(中国文学作品)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…...

MySQL 问题总结

什么是MVCC&#xff1f; 说说MySQL实现MVCC的原理&#xff1f; MVCC&#xff0c;全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制。MVCC是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问。 对于「读已提交」和…...

62. 不同路径

62. 不同路径 一个机器人位于一个 m∗nm * nm∗n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路…...

在windows安装python3.11同时进行一个数据的练习

安装包百度网盘如下&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1l9H1GWP64LOxLaXXLie2uA?pwd6666 提取码&#xff1a;6666 1.我们选择自定义安装 2.当我们点了自定义安装后就直接next 3.修改路径&#xff0c;之后点击安装(install) 4.安装完成&#xff0c;进行…...

Java接口专题

基本介绍 接口给出一些没有实现的方法&#xff0c;封装到一起&#xff0c;到某个类使用时再根据具体情况把这些方法写出来。 注意&#xff1a;在jdk7之前&#xff0c;接口里所有的方法都是抽象方法。在jdk8之后接口中可以有静态方法&#xff0c;默认方法 interface 接口名{/…...

6招优化WordPress打开速度-让你的网站飞起来

为什么我们的WordPress网站比你的快&#xff1f; 我们的官网是使用WordPress框架搭建的&#xff0c;有没有发现我们的网站非常快&#xff0c;而你的WordPress网站比较慢呢&#xff1f;那是因为我们的网站经过了优化。 WordPress 很慢&#xff1f; 为什么很多人都会觉得 Word…...

春天到了,来一场 VoxEdit 创作大赛吧!

春天的气息扑面而来&#xff0c;这是让你尽情绽放创造力的最佳时机&#xff01;我们将以「春天」为主题来一场 VoxEdit 大赛。在这里&#xff0c;你可以展示你的才华并赢得 $SAND 奖励&#xff01; 无论你是专业的设计师&#xff0c;还是仅仅喜欢创造美丽的艺术&#xff0c;这场…...

异步Buck和同步Buck的特点

1 介绍 随着时代的发展&#xff0c;工业&#xff0c;车载&#xff0c;通信&#xff0c;消费类等产品都提出了小型化&#xff0c;智能化的需求。相应的&#xff0c;对于这些系统中的电源模块提出了小型化的要求。目前&#xff0c;市场上依然存在很多异步Buck电源管理芯片使用的场…...

基于轻量级YOLO开发构建中国象棋目标检测识别分析系统

关于棋类相关的项目在我之前的博文里面都有做过&#xff0c;如下&#xff1a;《yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别》《YOLOV5融合SE注意力机制和SwinTransformer模块开发实践的中国象棋检测识别分析系统》《基于yolov5s实践国际象棋目…...

机器学习100天(三十五):035 贝叶斯公式

《机器学习100天》完整目录:目录 机器学习100天,今天讲的是:贝叶斯公式! 好了,上一节介绍完先验概率、后验概率、联合概率、全概率后,我们来看这样一个问题:如果我现在挑到了一个瓜蒂脱落的瓜,则该瓜是好瓜的概率多大? 显然,这是一个计算后验概率的问题,根据我们之…...

大话数据结构-栈

1 概述 栈&#xff08;Stack&#xff09;是限定仅在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶&#xff08;top&#xff09;&#xff0c;另一端称为栈底&#xff08;bottom&#xff09;&#xff0c;不含任何数据元素的栈称为空栈&#xff0c;栈又称为后进…...

javaFx实现放大镜效果——圆形、矩形、三角形放大镜,拖动调整放大镜大小,设置放大倍数

系列文章专栏:javafx图形绘制、桌面录屏录音源码合集 目录 一、实现的效果 二、实现思路 三、程序实现...

什么是客户忠诚度?建立忠诚文化的 5 种方法

客户忠诚度影响企业的各个方面&#xff0c;例如收入、品牌形象、预算分配和产品路线图。拥有忠实的客户群对于建立成功的企业至关重要&#xff0c;因为您的客户是您的主要拥护者&#xff0c;有助于为您的企业营造积极的氛围。 什么是客户忠诚度&#xff1f; 客户忠诚度衡量客户…...

【ROS2知识】关于colcon编译和ament指定

一、说明 这里说说编译和包生成的操作要点&#xff0c;以python包为例。对于初学者来说&#xff0c;colcon和ament需要概念上搞清楚&#xff0c;与此同时&#xff0c;工作空间、包、节点在一个工程中需要熟练掌握。本文以humble版的ROS2&#xff0c;进行python编程的实现。 二、…...

数据结构: 最小栈

最小栈的特色是保持栈后进先出的特性&#xff0c;同时能够以O(1)复杂度获得当前栈的最小值。 栈是比较好实现的&#xff0c;直接搞个链表&#xff0c;从头部删除和添加即可。 最小栈的核心逻辑是&#xff1a; 因为栈是后进先出的&#xff0c;因此栈顶元素之下的数字永远在栈…...

网站建设基本资料/电脑培训班有哪些科目

梦见厕所是什么意思准备考试的人梦见厕所屎&#xff0c;意味着接近录取成绩&#xff0c;稍加努力有希望。谈婚论嫁的人梦见厕所屎&#xff0c;说明水火不相容&#xff0c;未能沟通互相了解&#xff0c;无缘份。创业的人梦见厕所屎&#xff0c;代表反覆不定&#xff0c;多阻碍&a…...

土木工程毕业设计网站/百度云登录入口

bin目录 该目录用于存放一些可执行程序 &#xff0c;如 javac.exe java编译器 java.exe java运行工具 jar.exe 打包工具 javadoc.exe 文档生成工具 db目录 db目录是一个小型的数据库 从jdk6.0开始&#xff0c;java中引用了一个新的成员JavaDB,这是一个线java实现、开源的数…...

小型网站建设价格低/海城seo网站排名优化推广

一、简单概述 Splunk 平台的核心就是 SPL&#xff0c;即 Splunk 搜索处理语言。 它提供了非常强大的能力&#xff0c;通过简单的SPL语句就可以实现对安全分析场景的描述。 这里&#xff0c;我们以Linux secure日志分析作为示例&#xff0c;进行安全场景的构建。 二、安全日志 我…...

共享门店新增实时收款/seo关键词排名优化评价

一、ps命令介绍ps命令是Process Status的缩写&#xff0c;用于查看系统进程状态&#xff0c;ps命令输出值非常多&#xff0c;通常结合管道符使用。二、实例1.我们直接输入ps命令&#xff0c;不加任何参数。可以看到默认输出4列信息PID: 运行着的命令(CMD)的进程编号TTY: 命令所…...

建设学院网站的通知/竞价托管就选微竞价

http://www.bianceng.cn/webkf/aspx/201102/24785_2.htm转载于:https://www.cnblogs.com/shenzhenjia/archive/2011/07/21/2113323.html...

web程序设计asp.net实用网站开发/怎么做电商卖东西

建议一&#xff1a;创业初期要聚焦重点&#xff0c;把一个产品做到极致 1989年&#xff0c;从深圳大学读完研究生&#xff0c;史玉柱开启了自己的创业之旅。 史玉柱把创业项目选在自己所熟悉的软件开发上。他的四人开发团队用了8个月的时间&#xff0c;对开发的软件进行了完善。…...