用string实现的一个完整的类,包含以下操作:重载运算符 > >,< < ,string模板类,fstream对二进制数据读写

本文介绍了一个完整的C++类实现,包括运算符重载、赋值操作及string模板类使用,并演示了如何利用fstream进行二进制数据的读写。通过具体实例验证了类的功能。

///// 一个完整的类,包含以下操作:重载运算符 << >>,赋值转换,string模板类,fstream对二进制数据读写

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class Tperson;          // declaration of Tperson class
ostream& operator << (ostream& s, Tperson& per);   // declaration of function
istream& operator >> (istream& s, Tperson& per);    // declaration of function

class Tperson
{
     friend ostream& operator << (ostream& s, Tperson& per);  //friend declartion
     friend istream& operator >> (istream& s, Tperson& per);   //friend declartion
     string _name;          //_name is Tperson's name
     public:
            Tperson (string n = "") { _name = n; }  //default constructor
            Tperson (const Tperson& per) { _name = per._name; } //copy constructor
            Tperson& operator = (const Tperson& per) { _name = per._name; return *this; }    //overrding assignment function //有必要进行定义,这是对象的赋值,不产生临时对象
            //Tperson& operator = (string strSrc) { _name = strSrc; return *this; } //overrding assignment function 定义了构造函数就无需定义赋值转换了,会自动调用构造函数,产生临时对象,和前一个不同
            void Setname (string n) { _name = n; } //set Tperson's name
            string Getname () const { return _name; }  //get Tperson's name
};
ostream& operator << (ostream& s, Tperson& per)  //definition of overriding << function
{
           s << per._name;
           return s;
}
istream& operator >> (istream& s, Tperson& per)  //definition of overriding >> function
{
           s >> per._name;
           return s;
}


//funtion to verify class Tperson
void File ()
{
           Tperson per1[3] = {Tperson ("P11"),Tperson ("P2"),Tperson ("P3")};
 
           //write binary file
           ofstream outfile;
           outfile.open ("c://data.dat", ios::binary); 
           for (int i = 0; i < 3; i++)
           outfile.write ((char*)&per1[i], sizeof (per1[i]));
           outfile.close ();

           //read binary file
           ifstream infile ("c://data.dat", ios::binary);
           if (!infile)
           {
                      cerr << "文件无法打开";
                      exit (1);
           }
           Tperson per2[3]; 
           for ( i = 0; i < 3; i++)
           infile.read ((char*)&per2[i], sizeof (per2[i]));
           infile.close ();
           for ( i = 0; i < 3; i++)
           {
                      cout << "name : " << per2[i].Getname () << " " << sizeof (per2[i]) << " " << sizeof (Tperson) << endl;
           }

           //verify overriding and assignment functions
           Tperson per ("sfg");             cin >> per;
           cout << per<< endl;;
           per = "LKH:KHG";    //赋值,将产生临时对象
           cout << per << endl;
           per = per2[2];
           cout << per << endl;
           Tperson per3 = Tperson ("Hey");   //强制转换
}

 

已启动生成… 1>------ 已启动生成: 项目: myFont, 配置: Release Win32 ------ 1>Main.cpp 1>G:\Font\myFont\Main.cpp(42,1): error C2059: 语法错误:“}” 1>G:\Font\myFont\Main.cpp(42,1): error C2143: 语法错误: 缺少“;”(在“}”的前面) 1>G:\Font\myFont\Main.cpp(46,17): error C2065: “Point”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(46,10): error C2923: “std::vector”: 对于参数“_Ty”,“Point”不是有效的 模板 型变量 1>G:\Font\myFont\Main.cpp(46): message : 参见“Point”的声明 1>G:\Font\myFont\Main.cpp(46,10): error C2976: “std::vector”: 模板 参数太少 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(430): message : 参见“std::vector”的声明 1>G:\Font\myFont\Main.cpp(60,26): error C2039: "offset": 不是 "TableDirEntry" 的成员 1>G:\Font\myFont\Main.cpp(8): message : 参见“TableDirEntry”的声明 1>G:\Font\myFont\Main.cpp(71,1): error C2601: “readUint32”: 本地函数定义是非法的 1>G:\Font\myFont\Main.cpp(77,1): error C2601: “readInt16”: 本地函数定义是非法的 1>G:\Font\myFont\Main.cpp(107,37): error C2065: “unicode”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(109,38): error C2065: “unicode”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(153,28): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(155,38): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(156,36): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(157,37): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(181,32): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(182,30): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(187,36): error C3861: “readInt16”: 找不到标识符 1>G:\Font\myFont\Main.cpp(188,24): error C3861: “readInt16”: 找不到标识符 1>G:\Font\myFont\Main.cpp(189,24): error C3861: “readInt16”: 找不到标识符 1>G:\Font\myFont\Main.cpp(190,24): error C3861: “readInt16”: 找不到标识符 1>G:\Font\myFont\Main.cpp(191,24): error C3861: “readInt16”: 找不到标识符 1>G:\Font\myFont\Main.cpp(48,1): error C2512: “std::vector”: 没有合适的默认构造函数可用 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(430,1): message : 参见“std::vector”的声明 1>G:\Font\myFont\Main.cpp(48,1): message : 此诊断出现在编译器生成的函数“GlyphOutline::GlyphOutline(void)”中 1>G:\Font\myFont\Main.cpp(48): message : 参见对函数 "GlyphOutline::GlyphOutline(void)" 的引用 1>G:\Font\myFont\Main.cpp(209,17): error C2065: “flags”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(212,36): error C2065: “flags”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(218,33): error C2065: “flags”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(218,33): error C2672: “begin”: 未找到匹配的重载函数 1>G:\Font\myFont\Main.cpp(218,1): error C2893: 未能使函数模板“unknown-type std::begin(_Container &)”专用化 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\xutility(1844): message : 参见“std::begin”的声明 1>G:\Font\myFont\Main.cpp(218,1): message : 用下列模板参数: 1>G:\Font\myFont\Main.cpp(218,1): message : “_Container=unknown-type” 1>G:\Font\myFont\Main.cpp(218,1): error C2784: “const _Elem *std::begin(std::initializer_list<_Elem>) noexcept”: 未能从“unknown-type”为“std::initializer_list<_Elem>”推导 模板 参数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\initializer_list(55): message : 参见“std::begin”的声明 1>G:\Font\myFont\Main.cpp(218,33): error C2672: “end”: 未找到匹配的重载函数 1>G:\Font\myFont\Main.cpp(218,1): error C2893: 未能使函数模板“unknown-type std::end(_Container &)”专用化 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\xutility(1854): message : 参见“std::end”的声明 1>G:\Font\myFont\Main.cpp(218,1): message : 用下列模板参数: 1>G:\Font\myFont\Main.cpp(218,1): message : “_Container=unknown-type” 1>G:\Font\myFont\Main.cpp(218,1): error C2784: “const _Elem *std::end(std::initializer_list<_Elem>) noexcept”: 未能从“unknown-type”为“std::initializer_list<_Elem>”推导 模板 参数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\initializer_list(60): message : 参见“std::end”的声明 1>G:\Font\myFont\Main.cpp(218,1): error C3536: “<begin>$L0”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(218,1): error C3536: “<end>$L0”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(218,38): error C2100: 非法的间接寻址 1>G:\Font\myFont\Main.cpp(235,33): error C2065: “flags”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(235,33): error C2672: “begin”: 未找到匹配的重载函数 1>G:\Font\myFont\Main.cpp(235,1): error C2893: 未能使函数模板“unknown-type std::begin(_Container &)”专用化 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\xutility(1844): message : 参见“std::begin”的声明 1>G:\Font\myFont\Main.cpp(235,1): message : 用下列模板参数: 1>G:\Font\myFont\Main.cpp(235,1): message : “_Container=unknown-type” 1>G:\Font\myFont\Main.cpp(235,1): error C2784: “const _Elem *std::begin(std::initializer_list<_Elem>) noexcept”: 未能从“unknown-type”为“std::initializer_list<_Elem>”推导 模板 参数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\initializer_list(55): message : 参见“std::begin”的声明 1>G:\Font\myFont\Main.cpp(235,33): error C2672: “end”: 未找到匹配的重载函数 1>G:\Font\myFont\Main.cpp(235,1): error C2893: 未能使函数模板“unknown-type std::end(_Container &)”专用化 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\xutility(1854): message : 参见“std::end”的声明 1>G:\Font\myFont\Main.cpp(235,1): message : 用下列模板参数: 1>G:\Font\myFont\Main.cpp(235,1): message : “_Container=unknown-type” 1>G:\Font\myFont\Main.cpp(235,1): error C2784: “const _Elem *std::end(std::initializer_list<_Elem>) noexcept”: 未能从“unknown-type”为“std::initializer_list<_Elem>”推导 模板 参数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\initializer_list(60): message : 参见“std::end”的声明 1>G:\Font\myFont\Main.cpp(235,1): error C3536: “<begin>$L1”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(235,1): error C3536: “<end>$L1”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(235,38): error C2100: 非法的间接寻址 1>G:\Font\myFont\Main.cpp(250,31): error C2663: “std::vector<_Ty,_Alloc>::push_back”: 2 个重载没有“this”指针的合法转换 1>G:\Font\myFont\Main.cpp(262,1): error C2662: “bool std::vector<_Ty,_Alloc>::empty(void) noexcept const”: 不能将“this”指针从“const std::vector”转换为“const std::vector<_Ty,_Alloc> &” 1>G:\Font\myFont\Main.cpp(262,1): message : 原因如下: 无法从“const std::vector”转换为“const std::vector<_Ty,_Alloc>” 1>G:\Font\myFont\Main.cpp(262,20): message : 转换要求第二个用户定义的转换运算符或构造函数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1529,44): message : 参见“std::vector<_Ty,_Alloc>::empty”的声明 1>G:\Font\myFont\Main.cpp(266,1): error C2662: “allocator_traits<allocator_traits<_Alloc>::rebind_alloc<_Ty>>::size_type std::vector<_Ty,_Alloc>::size(void) noexcept const”: 不能将“this”指针从“const std::vector”转换为“const std::vector<_Ty,_Alloc> &” 1>G:\Font\myFont\Main.cpp(266,1): message : 原因如下: 无法从“const std::vector”转换为“const std::vector<_Ty,_Alloc>” 1>G:\Font\myFont\Main.cpp(266,34): message : 转换要求第二个用户定义的转换运算符或构造函数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1534,49): message : 参见“std::vector<_Ty,_Alloc>::size”的声明 1>G:\Font\myFont\Main.cpp(269,1): error C2678: 二进制“[”: 没有找到接受“const std::vector”型的左操作数的运算符(或没有可接受的转换) 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1559,50): message : 可能是“const _Ty &std::vector<_Ty,_Alloc>::operator [](const allocator_traits<allocator_traits<_Alloc>::rebind_alloc<_Ty>>::size_type) noexcept const” 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1549,44): message : 或 “_Ty &std::vector<_Ty,_Alloc>::operator [](const allocator_traits<allocator_traits<_Alloc>::rebind_alloc<_Ty>>::size_type) noexcept” 1>G:\Font\myFont\Main.cpp(269,1): message : 尝试匹配参数列表“(const std::vector, size_t)”时 1>G:\Font\myFont\Main.cpp(269,32): error C2530: “p1”: 必须初始化引用 1>G:\Font\myFont\Main.cpp(270,1): error C2678: 二进制“[”: 没有找到接受“const std::vector”型的左操作数的运算符(或没有可接受的转换) 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1559,50): message : 可能是“const _Ty &std::vector<_Ty,_Alloc>::operator [](const allocator_traits<allocator_traits<_Alloc>::rebind_alloc<_Ty>>::size_type) noexcept const” 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1549,44): message : 或 “_Ty &std::vector<_Ty,_Alloc>::operator [](const allocator_traits<allocator_traits<_Alloc>::rebind_alloc<_Ty>>::size_type) noexcept” 1>G:\Font\myFont\Main.cpp(270,1): message : 尝试匹配参数列表“(const std::vector, size_t)”时 1>G:\Font\myFont\Main.cpp(270,32): error C2530: “p2”: 必须初始化引用 1>G:\Font\myFont\Main.cpp(272,1): error C3536: “p1”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(272,1): error C3536: “p2”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(282,18): error C2039: "sort": 不是 "std" 的成员 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(24): message : 参见“std”的声明 1>G:\Font\myFont\Main.cpp(282,1): error C3861: “sort”: 找不到标识符 1>G:\Font\myFont\Main.cpp(315,34): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(316,23): error C2039: "offset": 不是 "TableDirEntry" 的成员 1>G:\Font\myFont\Main.cpp(8): message : 参见“TableDirEntry”的声明 1>G:\Font\myFont\Main.cpp(316,32): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(317,32): error C3861: “readUint32”: 找不到标识符 1>G:\Font\myFont\Main.cpp(326,26): error C3861: “getGlyphIndexForUnicode”: 找不到标识符 1>G:\Font\myFont\Main.cpp(330,1): error C2662: “bool std::vector<_Ty,_Alloc>::empty(void) noexcept const”: 不能将“this”指针从“std::vector”转换为“const std::vector<_Ty,_Alloc> &” 1>G:\Font\myFont\Main.cpp(330,1): message : 原因如下: 无法从“std::vector”转换为“const std::vector<_Ty,_Alloc>” 1>G:\Font\myFont\Main.cpp(330,20): message : 转换要求第二个用户定义的转换运算符或构造函数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1529,44): message : 参见“std::vector<_Ty,_Alloc>::empty”的声明 1>G:\Font\myFont\Main.cpp(333,32): error C2663: “std::vector<_Ty,_Alloc>::_Unchecked_begin”: 2 个重载没有“this”指针的合法转换 1>G:\Font\myFont\Main.cpp(333,32): error C2663: “std::vector<_Ty,_Alloc>::_Unchecked_end”: 2 个重载没有“this”指针的合法转换 1>G:\Font\myFont\Main.cpp(333,1): error C3536: “<begin>$L0”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(333,1): error C3536: “<end>$L0”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(333,39): error C2100: 非法的间接寻址 1>G:\Font\myFont\Main.cpp(334,21): error C2065: “scale”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(335,21): error C2065: “scale”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(339,1): error C2678: 二进制“[”: 没有找到接受“std::vector”型的左操作数的运算符(或没有可接受的转换) 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1559,50): message : 可能是“const _Ty &std::vector<_Ty,_Alloc>::operator [](const allocator_traits<allocator_traits<_Alloc>::rebind_alloc<_Ty>>::size_type) noexcept const” 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\vector(1549,44): message : 或 “_Ty &std::vector<_Ty,_Alloc>::operator [](const allocator_traits<allocator_traits<_Alloc>::rebind_alloc<_Ty>>::size_type) noexcept” 1>G:\Font\myFont\Main.cpp(339,1): message : 尝试匹配参数列表“(std::vector, int)”时 1>G:\Font\myFont\Main.cpp(340,38): error C2663: “std::vector<_Ty,_Alloc>::_Unchecked_begin”: 2 个重载没有“this”指针的合法转换 1>G:\Font\myFont\Main.cpp(340,38): error C2663: “std::vector<_Ty,_Alloc>::_Unchecked_end”: 2 个重载没有“this”指针的合法转换 1>G:\Font\myFont\Main.cpp(340,1): error C3536: “<begin>$L1”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(340,1): error C3536: “<end>$L1”: 初始化之前无法使用 1>G:\Font\myFont\Main.cpp(340,45): error C2100: 非法的间接寻址 1>G:\Font\myFont\Main.cpp(341,13): error C2065: “minX”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(341,29): error C2065: “minX”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(342,13): error C2065: “maxX”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(342,29): error C2065: “maxX”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(343,25): error C2672: “std::min”: 未找到匹配的重载函数 1>G:\Font\myFont\Main.cpp(343,1): error C2784: “_Ty std::min(std::initializer_list<_Elem>)”: 未能从“float”为“std::initializer_list<_Elem>”推导 模板 参数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(74): message : 参见“std::min”的声明 1>G:\Font\myFont\Main.cpp(343,1): error C2780: “_Ty std::min(std::initializer_list<_Elem>,_Pr)”: 应输入 2 个参数,却提供了 1 个 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(71): message : 参见“std::min”的声明 1>G:\Font\myFont\Main.cpp(343,1): error C2780: “const _Ty &std::min(const _Ty &,const _Ty &) noexcept(<expr>)”: 应输入 2 个参数,却提供了 1 个 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(63): message : 参见“std::min”的声明 1>G:\Font\myFont\Main.cpp(343,1): error C2780: “const _Ty &std::min(const _Ty &,const _Ty &,_Pr) noexcept(<expr>)”: 应输入 3 个参数,却提供了 1 个 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(54): message : 参见“std::min”的声明 1>G:\Font\myFont\Main.cpp(344,25): error C2672: “std::max”: 未找到匹配的重载函数 1>G:\Font\myFont\Main.cpp(344,1): error C2784: “_Ty std::max(std::initializer_list<_Elem>)”: 未能从“float”为“std::initializer_list<_Elem>”推导 模板 参数 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(51): message : 参见“std::max”的声明 1>G:\Font\myFont\Main.cpp(344,1): error C2780: “_Ty std::max(std::initializer_list<_Elem>,_Pr)”: 应输入 2 个参数,却提供了 1 个 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(48): message : 参见“std::max”的声明 1>G:\Font\myFont\Main.cpp(344,1): error C2780: “const _Ty &std::max(const _Ty &,const _Ty &) noexcept(<expr>)”: 应输入 2 个参数,却提供了 1 个 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(40): message : 参见“std::max”的声明 1>G:\Font\myFont\Main.cpp(344,1): error C2780: “const _Ty &std::max(const _Ty &,const _Ty &,_Pr) noexcept(<expr>)”: 应输入 3 个参数,却提供了 1 个 1>D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\utility(31): message : 参见“std::max”的声明 1>G:\Font\myFont\Main.cpp(347,23): error C2065: “maxX”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(347,30): error C2065: “minX”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(351,24): error C2065: “minX”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(78,37): error C3861: “readUint16”: 找不到标识符 1>G:\Font\myFont\Main.cpp(368,13): error C2065:fileSize”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(368,40): error C2065:fileSize”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(369,14): error C2065:fileSize”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(369,48): error C2065:fileSize”: 未声明的标识符 1>G:\Font\myFont\Main.cpp(399,5): error C2059: 语法错误:“try” 1>G:\Font\myFont\Main.cpp(399,9): error C2143: 语法错误: 缺少“;”(在“{”的前面) 1>G:\Font\myFont\Main.cpp(399,9): error C2447: “{”: 缺少函数标题(是否是老式的形式表?) 1>已完成生成项目“myFont.vcxproj”的操作 - 失败。 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
最新发布
01-03
基本语法与结构 变量定义与基本数据型(int, float, double, char, bool) 型推导(auto, decltype) 运算符(算术、逻辑、比较、位运算等) 控制结构:if-else, switch, for, while, do-while 函数定义、参数传递(值传递、引用传递、指针传递) 函数重载与默认参数 const 关键字的使用(常量、常量成员函数) 2. 面向对象编程(OOP) 与对象的定义 构造函数与析构函数 成员访问修饰符(public, private, protected) 封装、继承、多态(虚函数、抽象运算符重载 this 指针 静态成员(变量与函数) 友元函数与友元 3. 指针与引用 指针的基本操作(定义、赋值、解引用) 指针与数组的关系 引用的使用(别名机制) 指向函数的指针 nullptr 的使用 4. 内存管理 动态内存分配(new / delete, new[] / delete[]) 内存泄漏与如何避免 智能指针(std::unique_ptr, std::shared_ptr, std::weak_ptr) RAII(资源获取即初始化)模式 5. 标准模板库(STL) 容器: 序列容器:vector, list, deque 关联容器:set, map, multiset, multimap 无序容器:unordered_set, unordered_map 迭代器(begin(), end(), rbegin(), rend()) 算法(sort, find, copy, transform 等) 函数对象(Functor)与 Lambda 表达式 std::pair, std::tuple, std::optional7. 命名空间 namespace 的定义与使用 嵌套命名空间 using 声明与 using namespace 8. 异常处理 try, catch, throw 异常安全编程 noexcept 说明符 9. 预处理器与宏 #include, #define, #ifdef, #ifndef 宏定义与函数宏 防止头文件重复包含(#pragma once 或 #ifndef ... #define ...) 10. 文件操作 输入输出流(iostream, fstream) 文件读写(ifstream, ofstream, fstream) 文本与二进制模式 11. 型转换 static_cast dynamic_cast reinterpret_cast const_cast 给出一个详细的保护上述知识点
08-08
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值