c++
文章平均质量分 70
c++学习
我想静静,
这个作者很懒,什么都没留下…
展开
-
glog使用指南
应用级别日志记录库glog原创 2024-03-14 10:25:58 · 1121 阅读 · 0 评论 -
C++面经
c++面试八股文原创 2023-03-20 23:02:34 · 1580 阅读 · 3 评论 -
effective c++
effective c++C++ explicitC++ explicitexplicit关键字只需用于类内的单参数构造函数前面,它的作用是表明该构造函数是显示的, 而非隐式的。google约定所有单参数的构造函数都必须是显示的类构造函数默认情况下即声明为implicit(隐式).#include <iostream>class CxString // 使用关键字explicit的类声明, 显示转换{public: char *_pstr; int _size原创 2021-10-18 14:09:40 · 110 阅读 · 0 评论 -
c++ 友元函数、友元类、内联函数
c++ 友元函数、友元类、内联函数友元函数友元类内联函数友元函数在C++中,我们使用类对数据进行了隐藏和封装,类的数据成员一般都定义为私有成员,成员函数一般都定义为公有的,以此提供类与外界的通讯接口。public:可以被该类中的函数、子类的函数、友元函数访问,也可以由该类的对象访问;protected:可以被该类中的函数、子类的函数、友元函数访问,但不可以由该类的对象访问;private:可以被该类中的函数、友元函数访问,但不可以由子类的函数、该类的对象、访问。但是,有时需要定义一些函数,这原创 2021-10-12 21:04:05 · 417 阅读 · 0 评论 -
c++多态、虚函数、纯虚函数、抽象类
c++多态、虚函数、纯虚函数、抽象类多态虚函数纯虚函数抽象类多态使用场景:将 基类类型的指针或者引用 指向 子类对象,并调用子类的虚函数。多态(polymorphism)是面向对象编程语言的一大特点,而虚函数是实现多态的机制。其核心理念就是通过基类访问派生类定义的函数。多态性使得程序调用的函数是在运行时动态确定的,而不是在编译时静态确定的。形成多态必须具备三个条件:1、必须存在继承关系;2、继承关系必须有同名虚函数(其中虚函数是在基类中使用关键字Virtual声明的函数,在派生类中重新定义基类中原创 2021-10-12 20:06:23 · 212 阅读 · 0 评论 -
C++ 函数模板在多文件编译中的问题
函数一般定义于头文件.h,实现于cpp;但是如果函数模板也定义与实现分离,就会报错。模板定义很特殊。由template<…> 处理的任何东西都意味着编译器在当时不为它分配存储空间,它一直处于等待状态直到被一个模板实例告知。在编译器和连接器的某一处,有一机制能去掉指定模板的多重定义。所以为了容易使用,几乎总是在头文件中放置全部的模板声明和定义。可以在实现所在cpp文件中添加实例化声明:头文件template<typename T>__global__ void func1原创 2021-07-24 19:02:37 · 701 阅读 · 0 评论 -
c++ 模版
模板(Templates)使得我们可以生成通用的函数,这些函数能够接受任意数据类型的参数,可返回任意类型的值,而不需要对所有可能的数据类型进行函数重载。这在一定程度上实现了宏(macro)的作用。函数模板#include <iostream> using namespace std;template <class T> T GetMax(T a, T b) { T result; result = (a>b)? a : b; return原创 2021-06-15 21:12:01 · 51 阅读 · 0 评论 -
C++学习之 动态内存
文章目录C++ 动态内存new运算符delete 操作符数组的动态内存分配对象的动态内存分配delete 与 delete[] 区别:malloc与new,free与deleteC++ 动态内存C++ 程序中的内存分为两个部分:栈:在函数内部声明的所有变量都将占用栈内存。堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。很多时候无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。在 C++ 中,可以使用new 运算符为给定类型的变量在原创 2021-03-25 22:32:10 · 130 阅读 · 0 评论 -
c++学习之异常处理
抛出异常可以使用 throw 语句在代码块中的任何地方抛出异常。throw 语句的操作数可以是任意的表达式,表达式的结果的类型决定了抛出的异常的类型。以下是尝试除以零时抛出异常的实例:double division(int a, int b){ if( b == 0 ) { throw "Division by zero condition!"; } return (a/b);}捕获异常catch 块跟在 try 块后面,用于捕获异常。您可以指定想要捕捉原创 2021-03-25 22:01:57 · 54 阅读 · 0 评论 -
c++学习之命名空间
在 C++ 应用程序中,可能在不同库中有重名函数,导致编译器就无法判断。因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。定义一个在某命名空间的函数如下:namespace first_space{ void func(){ cout << "Inside first_space" << endl; }}调用时,需要用到:原创 2021-03-25 21:51:13 · 75 阅读 · 0 评论 -
c++学习之继承
文章目录继承继承类型多继承继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。#include <iostream转载 2021-03-25 21:22:25 · 60 阅读 · 0 评论 -
C++学习之重载、多态、数据抽象、数据封装、接口
文章目录1. 重载运算符和重载函数函数重载运算符重载不可重载的运算符列表:2. C++ 多态虚函数静态多态纯虚函数形成多态必须具备三个条件:3. 数据抽象访问标签强制抽象数据抽象的好处数据抽象的实例设计策略4. C++ 数据封装与数据抽象的区别虚函数的私有性5. C++ 接口(抽象类)定义目的抽象类的实例6. 虚函数作用(多态作用)1. 重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具转载 2021-03-25 21:21:04 · 183 阅读 · 0 评论 -
c++学习之类的构造函数、析构函数、拷贝构造函数
文章目录类的构造函数类的析构函数拷贝构造函数什么情况使用拷贝构造函数:为什么用拷贝构造函数类的构造函数就是初始化函数,在创建对象时,为每个对象初始化数据成员#include <iostream>using namespace std;class line{ public: line(int len); // int getline(); void setline(int l); private:原创 2021-03-25 14:29:19 · 156 阅读 · 0 评论 -
c++数据类型,常量与变量
数据类型分类类型修饰符常量变量定义 :[修饰符] 数据类型 变量名初始化int a=10;int a=10,b=10;int a,b=10;//此时a未被初始化a=b;int a=b=10是错误定义修饰符register变量频繁使用,所以放置于寄存器中 extern 引用其他文件的变量extern int c auto从堆栈中分配变量...原创 2020-03-17 12:22:57 · 219 阅读 · 0 评论 -
C++输入输出
输入输出完全兼容C的写法printfscanfC++输入输出流流是指从某种IO设备上读入或写出的字符序列需要导入标准库#include<iostream>具体:cout输出流本质是将字符串插入到cout对象里,并以cout对象作为返回值返回,cout输出流需要搭配<<输出操作符来使用cout<<"Hello";//即会...原创 2020-03-16 17:12:58 · 101 阅读 · 0 评论 -
C++命名空间
命名空间作用:为了解决多个模块间命名冲突的问题,C++把相同的名字都放到不同的空间里,来防止名字的冲突用法1.#include<iostream>using namespace std;int main(){cout<<"Nice to meet you!"<<endl;return 0;}2.#include...原创 2020-03-16 17:04:30 · 114 阅读 · 0 评论