CPP复习总结
1.<wbr><wbr><wbr><wbr><wbr><wbr> Cstring<wbr> strstr strlwr strupr</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
2.<wbr><wbr><wbr><wbr><wbr><wbr> 调用复制构造函数的几种情况①一个新对象被另一个已经存在的同类型对象用以初始化②当一个对象作为实参传递给函数形参时要调用复制构造函数,函数返回时自动调用其析构函数③在函数返回一个对象时调用复制构造函数。</wbr></wbr></wbr></wbr></wbr></wbr>
3.<wbr><wbr><wbr><wbr><wbr><wbr> 静态数据成员初始化:<数据类型><类名>::<静态变量>=初始化数值 。 静态成员函数不能访问非静态数据成员。静态函数没有this指针。</wbr></wbr></wbr></wbr></wbr></wbr>
4.<wbr><wbr><wbr><wbr><wbr><wbr> 常对象成员①const是函数类型的一个组成部分,因此在实现部分也要带上const②常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修士的成员函数。③如果讲一个对象说明为常对象,则通过该对象只能调用它的常成员函数,不能调用其他的成员函数。④const关键字可以参与区分重载函数。⑤常成员数据只能在构造函数初始化列表中对其初始化。</wbr></wbr></wbr></wbr></wbr></wbr>
5.<wbr><wbr><wbr><wbr><wbr><wbr> 声明友元:只需要在类中任何位置添加声明即可①friend <数据类型> <友元函数名> (形参表) ;② friend class <类名></wbr></wbr></wbr></wbr></wbr></wbr>
6.<wbr><wbr><wbr><wbr><wbr><wbr> c++不允许初始化一个对象数组。</wbr></wbr></wbr></wbr></wbr></wbr>
7.<wbr><wbr><wbr><wbr><wbr><wbr> 构造函数调用次序①虚基类的构造函数②积累的构造函数③派生类中成员对象的构造函数④派生类的构造函数。 <派生类名>::<派生类名>(<总参数表>):<基类名>(<参数表1>),<基类名>(<参数表2>)……<基类名>(<参数表n>),<成员对象名>(<参数表n+1>),<成员对象名>(<参数表n+2>)……<成员对象名>(<参数表n+m>){构造函数体}</wbr></wbr></wbr></wbr></wbr></wbr>
8.<wbr><wbr><wbr><wbr><wbr><wbr> 虚继承。Class<类名>:virtual <继承方式><基类名> 引入虚基类后,无论该虚基类被继承多少次,在最终的派生类中都只有它的一份备份。</wbr></wbr></wbr></wbr></wbr></wbr>
9.<wbr><wbr><wbr><wbr><wbr><wbr> 纯虚函数和抽象类: virtual <类型><函数名>(<参数表>) = 0 ; 拥有纯虚函数的类就是抽象类,抽象类不能残生类得实例。</wbr></wbr></wbr></wbr></wbr></wbr>
10.<wbr><wbr> 一个类的对象可以作为另一个类的成员,一个类的对象不能作为在自身类的成员,一个类的指针或引用可以作为自身类的成员</wbr></wbr>
11.<wbr><wbr> 局部类:定义在函数体内的类叫局部类。嵌套类:在一个类中定义的类称为嵌套类;</wbr></wbr>
12.<wbr><wbr> 什么是虚继承:就是当有菱形继承的时候,只保存基类的一个副本。</wbr></wbr>
13.<wbr><wbr> 定位new:X *p = new<wbr> (buf)X; new = malloc + 构造函数</wbr></wbr></wbr>
14.<wbr><wbr> 拷贝构造函数<类名>::<类名>(const <类名>&<引用名> ).</wbr></wbr>
15.<wbr><wbr> 直接用拷贝构造函数要比用赋值的方式在效率上高很多。因为赋值的方式要先调用构造函数,再调用赋值函数。Ctest B= A //类的拷贝构造</wbr></wbr>
16.<wbr><wbr> Ctest C ; C = A ; //类的赋值<wbr> Ctest D(A) //类的拷贝构造</wbr></wbr></wbr>
17.<wbr><wbr> “成员初始化表”比“成员赋值”更优,因为前者调用的是类的拷贝构造函数,后者调用的是类的赋值操作。</wbr></wbr>
18.<wbr><wbr> 继承的二义性,需要用::操作符来确定调用的是那个父类的函数</wbr></wbr>
19.<wbr><wbr> 栈:通常是用于那些在编译期间就能确定存储大小的存储区,用于在函数作用域内创建,在离开作用域后自动销毁的变量的存储区。堆:通常用于那些再编译期间不能确定存储大小的变量存储区,由malloc分配,free释放。常量存储区,全局、静态的存储区通常用于那些再编译期间就能确定存储大小的存储区,在整个程序运行期间都可见。</wbr></wbr>
20.<wbr>预处理:文件包含,宏替换,条件编译,布局控制。#progma once能保证头文件被编译一次。</wbr>
21.<wbr>inline函数的好处:节省函数调用,参数传递,控制权转移等开销。Extern“C”就是告诉编译器用c语言的规则去编译调用函数。</wbr>
22.<wbr><wbr> 定位new。(不分配内存)在已经分配了的内存上再来构建类对象。</wbr></wbr>
如:char *buf =new char[1024];
X *p = new (buf) X;
<wbr></wbr>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
<wbr></wbr>
int main(){
<wbr><wbr><wbr><wbr> vector<int > v(15,13) ;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> for(int i = 0 ; i < 10 ; i++)</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> v[i] = i*i;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr> for(vector<int>::iterator ix = v.begin() ; ix!= v.end() ; ix++)</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << *ix << "\t" ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> cout << endl ;</wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr> cout << "v.size() = " << v.size() << endl ;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> cout << "v.capacity()=" << v.capacity() << endl ;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> cout << "v.empty() = " << v.empty() << endl;</wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> sort(v.begin() , v.end());</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << "after sort " << endl ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> for(vector<int>::iterator ix = v.begin() ; ix!= v.end() ; ix++)</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << *ix << "\t" ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << endl ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> v.erase(v.begin() +5 ,v.begin()+10);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << "after erase !" << endl ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> for(vector<int>::iterator ix = v.begin() ; ix!= v.end() ; ix++)</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << *ix << "\t" ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << endl ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << "after reverse" << endl ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> reverse(v.begin() , v.end());</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> for(vector<int>::iterator ix = v.begin() ; ix!= v.end() ; ix++)</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << *ix << "\t" ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << endl ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr></wbr>
}
<wbr></wbr>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
<wbr></wbr>
int main(){
<wbr><wbr><wbr><wbr> char temp[100];</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> string stemp ;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> vector<string> v;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> printf("please input a string , and input a '#' as the signal of end\n");</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> scanf("%s",temp);</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> while(temp[0]!='#')</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> {</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> stemp = temp ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> v.push_back(stemp);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> scanf("%s",temp);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr> for(vector<string>::iterator ix = v.begin() ; ix!= v.end() ; ix++)</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << *ix << "\t" ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> cout << endl ;</wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr> reverse(v.begin()<wbr> , v.end());</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> for(vector<string>::iterator ix = v.begin() ; ix!= v.end() ; ix++)</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << *ix << "\t" ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> cout << endl ;</wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr> sort(v.begin()<wbr> , v.end());</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> for(vector<string>::iterator ix = v.begin() ; ix!= v.end() ; ix++)</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> cout << *ix << "\t" ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr> cout << endl ;</wbr></wbr></wbr></wbr>
}
<wbr></wbr>
String:
已知string的原型为:
Class String {
<wbr><wbr><wbr><wbr><wbr><wbr> Public:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> String ( const char *str );</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> String(const String &s);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ~String();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> String & oprator = (const String &s );</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> Private:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> Char *m_data;</wbr></wbr></wbr></wbr></wbr></wbr>
};
String::String(const char *str){
<wbr><wbr><wbr><wbr><wbr><wbr> If(str){</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> M_data = new char[strlen(p)+1];</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> Strcpy(M_data ,str);</wbr></wbr></wbr></wbr></wbr></wbr>
}
Else
{
M_data = new char[1];
*M_data =’\0’;
}
}
String::~String(void){
<wbr><wbr><wbr><wbr><wbr><wbr> Delete [] m_data;</wbr></wbr></wbr></wbr></wbr></wbr>
}
String::String(const String &other){
<wbr><wbr><wbr><wbr><wbr><wbr> M_data = new char [ strlen(other)+1];</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> Strcpy(m_data , other.m_data);</wbr></wbr></wbr></wbr></wbr></wbr>
}
String & String::operate = (const String &other){
<wbr><wbr><wbr><wbr><wbr><wbr> If(this == &other){</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> Return *this;</wbr></wbr></wbr></wbr></wbr></wbr>
}
Delete [] m_data;
M_data = new<wbr> char[strlen(other.m_data)+1];</wbr>
Strcpy(m-data , other.m_data);
Return *this;
}
分享到:
相关推荐
总结了.h文件能做什么,.cpp文件能做什么,总结了.h文件的本质,方便新手在遇到文件包含、类型声明、变量定义时能理清.h与.cpp关系,纯属个人总结文档。
鞍钢300MW CCPP运行总结 介绍了鞍钢300 MW M701S(F)型CCPP机组的工艺流程,分析了机组在生产运行过程中存在的几个问题,提出了相应的解决方案。
陈硕的cpp practice总结, 可以从陈硕的blog上直接下载,这里放一个当作推广了。
.
.
项目开发时总结的C++函数
Cpp1.cpp
复习题答案.cpp
C语言复习代码.cpp
整理电脑的时候发现自己总结的CPP入门经典,我觉得自己写的还可以,希望能够帮助大家
期末复习2.cpp
20240304-05复习.cpp
二叉树--复习.cpp
数组指针函数复习.cpp
数据结构图知识点总结.cpp
复习材料部分代码.cpp
6.20总结.cpp
12-7-复习.cpp
c++基础知识复习,包含了33个cpp文件,每个文件包含特定主题的知识回顾,使用特定案例重温某些不常用但是重要的算法或函数的使用方法,含注释。
C/C 面试知识总结,只为复习、分享