首页 > 编程语言 >C++ 突袭

C++ 突袭

时间:2023-08-19 18:13:35浏览次数:43  
标签:函数 double 突袭 C++ radius 内联 class

基本知识

image

image

image

image

image

  • 必须在函数声明中声明默认参数!
  • 默认参数必须在形参列表的结尾!避免歧义
  • 函数声明就是函数的身份证,外部调用方不看定义只看声明

image

image

  • 和 取地址 类似

image
image

函数

overload 函数重载

image

要求:

  1. 函数的名字相同
  2. 参数列表(数量,类型)不同

注意:与返回值无关

image

问题 --避免overload歧义
image
image

image

inline 内联函数

image

内联函数:指建议编译器编译时将某个函数在调用处直接展开,避免运行时调用开销。

内联函数的要求:若一函数功能简单,则函数调用的额外开销占比较高。

image

注意:inline只是建议

  • 并不是写了 inline 关键字就一定会被内联,只是提出建议,由编译器决定是否采纳
  • 内联这个动作发生在编译时,提升运行时的效率
    image

面向对象

面向对象:既然随着系统参与实体的增多,过程变得复杂,那就不费力描述每一个可能的过程了,转而描述每一个实体
实体=属性+行为

从面向过程到面向对象 对于问题:求解不同图形的周长和面积
image

image

class 类

每个实体 = 一个类class = 定义它的属性(成员变量) + 行为(成员函数)
image
例如:

class Circle {
private:
    double radius;
public:
    Circle(double radius) {
        this->radius = radius;
    }
    double getRadius() {
        return radius;
    }
};

简单理解:结构体 + 行为(成员函数) = 类

  • 事实上C++中也支持结构体定义成员方法,两者并无本质区别
  • 根据使用场景选择结构体或类:
    •结构体:主要记录数据,极少行为(如资源配置信息、网络连接信息等)
    •类:既有属性也有行为(如学生类、用户类、玩家类等)

标签:函数,double,突袭,C++,radius,内联,class
From: https://www.cnblogs.com/kingwz/p/17642825.html

相关文章

  • C++序列化封装EasySerialize
      最近在做C++项目,需要序列化和反序列化json以及xml数据。可能是由于用惯了C#等更高度化语言,搜了一遍,发现C++没有特别方便使用的序列化、反序列化的库。大部分库都是为了实现功能(非常感谢这些实现库的作者),使用时,需要根据字段深度定义结构体字段(这一步无法省略),然后再使用手动编......
  • 24届C++后端开发八月面经
    百度提前批一面项目:日志模块,如何实现保证写入和非保证写入如何保证日志时间的实时性?不用文件大小作为文件滚动的标注,而是使用时间作为标识更加符合查看日志的需求webserver如何与MYSQL数据库进行交互?当有非常多的并发量,如何进行一个MYSQL底层存储的优化?记录用户uid最......
  • c++ 面试整理
    如何理解封装、继承、多态封装可以隐藏实现细节,使得代码模块化;封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。多态多态指同一个实......
  • 二分搜索法-C++
    二分法,就是对一个数组中,已经排好序的数字进行搜索。使用二分法的前提条件:1.是一个数组2.该数组中的数字已经是有序的,比如升序的数字或者降序的数字都可以。inta[]={1,2,3,4};   intb[]={4,3,2,1};3.该数组中没有出现重复的数字 二分法原理:就是对一个数组,不断的划分......
  • C++问题汇总
    一、执行C++程序报错1、现象#现象./gtest_W:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.20'notfound(requiredby./gtest_W)./gtest_W:/lib64/libstdc++.so.6:version`CXXABI_1.3.9'notfound(requiredby./gtest_W)./gtest_W:/lib64/libstdc++.so.6:version......
  • C++入门到放弃(11)——继承
    ​继承是面向对象编程语言当中,最重要的部分,也是代码重用的一种重要形式。不知道为啥不能添加代码了,全部只能用图片替代了。1.基本形式首先继承的有三种基本形式,分别是public、private、protected,代表公有继承、私有继承和保护继承,之前在介绍作用范围的时候提过这三者的区别,但这......
  • VScode软件的安装以及C/C++环境配置的方法
    今天和大家分享一下VScode软件的安装以及C/C++环境配置的方法。手把手教大家入门。1,下载VScode编译器(1)   官网下载链接:https://code.visualstudio.com/ (2)安装VScode。安装过程中的附加任务建议全部勾选。 至此VScode安装完成 2,下载编译器MinGW。(1)下载地址:https:......
  • c++ 多线程
    #include<iostream>#include<functional>#include<thread>#include<future>//std::promise,std::future#include<chrono>voidprint_int(std::future<int>&fut){intx=fut.get();......
  • 如何在C++程序中借助Windows自带的bitsadmin命令从123云盘(不开通直链或会员)上下载文件
    最近,我想发布一个程序,里面想嵌入一些比较大的文件,但是如果直接用资源方式嵌入的话程序的体积就非常大,所以我想用从网上下载的方式获取这些文件。之前我试过很多方式,都没有成功,最后找到了这种方式...准备工作:先了解一下bitsadmin命令的语法,详见官方文档https://learn.microsof......
  • c++[1]
    命名空间:为什么要使用命名空间?使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,于是就有了关键字namespace举个例子:#include<iostream>#include<stdlib.h>//头文件中包含rand函数的定义intrand=10;//命名冲突intmain(){ printf("%d",rand);......