1 设计类,求圆的周长2 内联函数 2.1 内联函数的引出====>函数宏的缺陷 2.1.1 必须保证运算完整性,加括号 2.1.2 即使加了括号,有些情况依然和你预期结果不符,比如++i 2.1.3 宏函数,也不重视作用域 2.2 内联函数,关键字:inline 2.3 函数声明和实现必须同时加上inline,才算内联函数的 2.4 类内部成员函数,默认加上inline关键字 2.5 内联函数和编译器的关系 2.5.1 加入内联关键字...
http://www.cnblogs.com/lovebread/archive/2009/11/24/1609936.html原文:http://www.cnblogs.com/charlesblc/p/5794816.html
map,vector 等容器内容的循环删除问题(C++) map,vector等容器的循环删除不能用普通的方法删除:for(auto p=list.begin();p!=list.end();p++)list.erase(p);类似的方式,会出错的,不信你调试试试 :)这里使用了一个` iterator` 的一个自增/自减 ,来巧妙的实现了, 删除当前的`iterator,` 但是有给当前的`iterator`赋值为其下一个的操作,不至于删除后,当前的 `iterator` 就失效了! 代码: 1 #include <iostream>2 #include <vector>3 #inc...
转载自:http://www.cnblogs.com/zhoug2020/archive/2012/08/31/2665451.html有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型) 常量和引用,必须通过参数列表进行初始化。 静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末。参考下面的代码以及其中注释...
第一眼见到explicit和volatile可能会一愣一愣的觉得可能是c11或者c14新加的标识符。其实不是这样,volatile和const两个关键字在C语言的第二个版本KR C的时候就被加入了C标准,他们是两个相对的关键字const 修饰符表示这是一个常量类型,这个变量的值不会被程序改变volatile 修饰符表示这个变量可能被编译器以外的行为(譬如内联汇编程序)改变。修饰常量变量只要和类型紧挨着就可以intconst a = 1;
constint a = 1;修饰指针时以*号...
/* 语句块 用花括号括起来的语句 */#include <iostream>int main(){ using namespace std; int x = 20; { int y = 100; cout << x << endl; //ok cout << y << endl; //ok } //以上就是一个语句块,y变量定义在语句块里面,所以y只能在改语句块中使用,在语句块之外是不能使用的 cout << x << endl; //ok //cout << y << endl; //invalid return 0;}
/*新变量就会隐...
构造函数
1. 构造函数能不能为虚函数?构造函数不能为虚函数,原因如下:a. 构造一个对象的时候,必须知道对象的实际类型;如果构造函数为虚函数,是在运行时确定实际类型的;b. 虚函数的执行依赖于虚函数表,而虚函数表在构造函数中进行初始化工作,即初始化vptr(虚表指针),让其指向正确的虚函数表;如果构造函数位虚函数,是在运行时初始化虚函数表。
2. 构造函数的调用顺序?当定义一个派生类对象时,构造函数的调用顺序如...
使用http协议的好处
1、http协议简单,成熟 2、短链接获取数据后释放 不过在c++中,如果时简单的get 、 post 交互,c++ 不像java,node,或者go那样,随手就写出来,不理解网络包或者没有经验,无非就只能引入包,引入一个包并不难,本来很轻量的程序为了一个两个简单的交互引入越来越多的包并不是好事情,下面我们徒手写一段,可以使用该代码简单地获取数据而不用引入其他包。
http协议 get
int getData(const char* host, unsign...
1、Constraints and concepts (约束和概念)
在类模板和函数模板编程中,主要用于对模板参数的结束和限制,这种约束和限制发生在编译期,编译错误不再那么晦涩难懂了。 在模板编程中,可以限制模板参数的类型或具用某种特性,如:可以限制为整型、数值型、bool 型、或必须支持 hash 特性、或某个类的派生类型等。
在 C++20 中 Concepts 是非常重要的概念,模板编程终于有了质的提升。
Concepts
Concepts 是 requirements 的具名集合...
借助io.h,支持通配符*,输出count为jpg的个数。
#include<iostream>
#include <io.h>int main()
{std::string folder = "/*自定义的文件夹位置*/\\images\\*";std::string ext = ".jpg";intptr_t handle = -1;_finddata_t fileinfo;std::string file = folder + ext;const char* to_search = file.c_str();handle = _findfirst(to_search, &fileinfo); //第一次查找if (-1 == handle)return 0;std::cout << fileinfo.name...
将数据输出到文件中#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<cstdlib>
#include<fstream>
#include<time.h>
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
const LL INF=1e9+7;
const int maxn=1e5+50;
int a[maxn],b[maxn];//存已经出现过的数 和 没有出现过的数
int main()
{srand((unsigned)time(0));//保证随...
MinGW版本 8.1.0
launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(Windows) Launch","type": "cppvsdbg","request": "launch","program": "${workspaceFolder}/${fileBasenameNoExtension}.exe","args": [],"stopA...
所以我一直在审查我的数据结构,我从来没有理解带有指针的java实现与带有指针的语言相比最终是如何实际工作的.
java类中的树或列表是使用节点类实现的,该节点类具有其他节点类作为元素,如果它是树,则表示左和右节点.public class Node {private int data;private Node left;private Node right;...
}编译器是否知道只使用指针或者所有这些都是通过值来完成的,并且我从树节点中保存了许多不同版本的相同值?解决方法:我发现在这个问题...
记一个知识点,类模板和普通的代码不同,不能用普通的方法实现头文件.h和源文件.cpp文件分离。
先讲解决方案,很简单,把正常的代码写进头文件的尾端,也就是头文件 #endif 之后。
原理:
简而言之,类模板的实现代码只有当已经确定了具体模板的类型,才会自动生成代码。而在编译时,编译器根本不知道你要设定的类型参数<T>是啥,所以实现代码(.cpp)中的内容实际是不存在的。
实际上,在GNU C++标准库里,也能...
最近发现了一个C++的头文件bits/stdc++.h,听说这是一个几乎包含了所有C++库函数的头文件,就想更深入的了解一下,下面是头文件内容1 // C++ includes used for precompiling -*- C++ -*-2 3 // Copyright (C) 2003-2013 Free Software Foundation, Inc.4 //5 // This file is part of the GNU ISO C++ Library. This library is free6 // software; you can redistribute it and/or modify it under the7 // terms of the GNU G...