首页 > 编程语言 >「REMAKE C++」Day 4

「REMAKE C++」Day 4

时间:2022-12-26 23:44:28浏览次数:43  
标签:const 函数 声明 C++ display REMAKE os Day 构造函数

Day 4

  • 内联函数和 constexpr 函数声明和定义都在头文件中

封装的益处:

  • 确保用户代码不会无意间破坏封装对象的状态。
  • 被封装的类的具体实现细节可以随时改变,而不必调整用户级别的代码。
  • 某些类不能依赖于默认的构造函数

    1. 只有当类没有声明任何构造函数,编译器才会生成默认构造函数。
    2. 如果累包含内置类型或者复合类型成员,只有已经明确了初始化值,才有可能保证不会出错(否则未初始化值会出错)
    3. 类中包含其他没有默认构造函数的类,编译器不能为其合成默认构造函数。
  • friend 友元函数声明后可以访问类的非公有成员,可以在类开始或结束集中声明。

  • mutable 声明的数据成员即使在 const 对象中也可以被修改。

  • #pragma once 文件只会被包含一次

  • 基于 const 的重载。

    Screen& display(std::ostream& os)
        { do_display(os); return *this; } 
    const Screen& display(std::ostream& os) const 
        { do_display(os); return *this; } 
private:
    void do_display(std::ostream &os) const { os << contents; }
- 并不会增加函数开销,内部定义(隐式内联)。
  • 类 A 将类 B 的成员函数 f() 声明为友元函数,需要将 f() 提前声明(B在A之前进行类声明,如果B需要用到A可以先前向声明类A,但是用到 A 的成员函数还不知道怎么做)

  • 编译器处理完类中的全部生命后才会处理成员函数的定义。

  • 对于成员是 const、引用或者某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表来初始化。

    • 初始化顺序与出现顺序一致。(和在构造函数中的初始出现顺序无关)
  • explicit 关键字声明的单参数构造函数和多参数的构造函数不能用于隐式转换,只能够直接初始化。

    • string 类型接受单参数构造函数,如 string s = "abc" 这实际是一个单参数隐式转换构造函数。

标签:const,函数,声明,C++,display,REMAKE,os,Day,构造函数
From: https://www.cnblogs.com/Roshin/p/remake_cpp_day4.html

相关文章

  • 关于c++中读入输出方式的重定向
    今天氵数据结构实验的时候发现了关于cpp文件和控制台输入输出重定向的问题。题目要求先从文件读入,然后再从控制台读入,再从控制台输出,最后输出到文件。本来想的是用freope......
  • macOS下vscode配置c++万能头文件
    vscode正常情况下是不能使用c++的万能头文件#include<bits/stdc++.h>,那么这会给我们算法刷题带来一定的不便,以下是配置教程,具体可以参考该博文:macOS下使用bits/stdc++.h万......
  • 基于pybind11实现Python调用c++编写的CV算法--上(Windows+VS)
    C++是一种编译型(compiled)语言,设计重点是性能、效率和使用灵活性,偏向于系统编程、嵌入式、资源受限的软件和系统。Python是一种解释型(interpreted)语言,同样也支持不同的......
  • day09-功能实现08
    家居网购项目实现08以下皆为部分代码,详见https://github.com/liyuelian/furniture_mall.git19.功能18-添加家居到购物车19.1需求分析/图解会员登录后,可以添加家居......
  • Hibernate_Day01
    文章目录​​一、web内容回顾​​​​1.JavaEE三层结构​​​​1.1web层:struts2框架​​​​1.2service层:spring框架​​​​1.3dao层:hibernate框架​​​​2.MVC思想......
  • 代码随想录Day43
    多模块项目,引用其他模块,需要在pom文件里面依赖声明。用RestFul风格进行调用。  同时需要搞一个RestFul的配置类,加载到Spring中去。 ......
  • C++实现Socket连接通信
    一、打开两个VS2019,创建两个控制台程序分别命名为client和servers 二、编写服务端servers1、包含头文件及库文件#include<WinSock2.h>#pragmacomment(lib,"ws2_32.lib")#......
  • Android学习day01【搭建Android Studio】
    是Google开发的操作系统Android开发是移动应用开发的表现形式之一还有很多的开发形式,就不一一列举了完整项目精简的开发流程   开发工具Androidstudio(强烈建议......
  • c/c++非阻塞键盘输入监听 Windows/Linux
    https://blog.csdn.net/a8821418/article/details/106492074Windows下c代码#include<conio.h>#include<windows.h>#include<iostream>usingnamespacestd;i......
  • Day1:计算机基础知识
    标题井号空格标题几个井号代表几级标题字体两边加一个星号两边加两个星号两边加三个星号两边加两个波浪号分割线三个-或者*分割线引用大于号引用图片所有......