资讯详情

Cherno C++系列笔记4——P18~P20 类和结构体

文章目录

  • 1.P18 类
  • 2.P19 类与结构体的区别
  • 3.P20 怎样写一个?Log类

1.P18 类

  • 类的本质也是语法糖,它只是将变量和函数结合在一起,使代码更简洁,没有其他功能。
  • 类别不提供其他额外的功能,不使用类别不能解决问题,使用类别仍然不能解决。因次C语言,一种不面向对象的语言,也可以完成开发功能。

2.P19 类与结构体的区别

C 类与结构体基本没有区别,只有一个关于可见度的小区别。C 结构体存在的原因是与C保持向后兼容。

  • 默认类成员private(私有)意味着只有其他方法可以访问类,需要设置在类的外部调用public(公有)。
  • 结构体成员的默认值是public(公有),结构体外也可访问。

3.P20 怎样写一个?Log类

以下函数实现一个Log根据严重程度,可以设置日志的输出级别Error/Warn/Info,对于某个具体的Log比较严重的信息可以输出对象。

#include <iostream>  class Log { 
         // 注意这里public可以写几块,让变量和函数分开写得更清楚 public:   const int log_level_error = 0;   const int log_level_warn = 1;   const int log_level_info = 2;    private:   int log_level_ = log_level_info;   // 成员变量有默认值    public:   void SetLevel(int level)   { 
             log_level_ = level;     }        void Error(const char* msg)   { 
             // 注意这里的判断逻辑,log对象级数越大,输出信息越能包含级数越小     if(log_level_ >= log_level_error)     { 
               std::cout << "[ERROR]: " << msg << std::endl;     }   }   void Warn(const char* msg)   { 
             if(log_level_ >= log_level_warn)     { 
               std::cout << "[WARN]: " << msg << std::endl;     }
		}
		void Info(const char* msg)
		{ 
        
				if(log_level_ >= log_level_Info)
				{ 
        
						std::cout << "[INFO]: " << msg << std::endl;
				}
		}
};

int main()
{ 
        
		Log log;
		//; 注意这里传参的形参类型在类成员变量中定义,直接传log_level_warn识别不了,所以要传成log.log_level_warn
		log.SetLevel(log.log_level_warn);    
		
		log.Error("hello");		// 可以输出
		log.Warn("hello");      // 可以输出
		log.Info("hello");        // 不会输出
	 
		return 0;
}

标签: p20j3m密封连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台