`
liuguxing
  • 浏览: 95184 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

c++知识

    博客分类:
  • C
 
阅读更多
函数模板:
template<class TT>
void Tswap(TT &t1,TT &t2){
	TT t = t1;
	t1 = t2;
	t2 = t;
}

具体化函数模板:
struct people{
	string name;
	int age;
};
template<>void Tswap<people>(people &p1,people &p2){
	int age = p1.age;
	p1.age = p2.age;
	p2.age = age;
}

实例化函数模板:
template<class T>
void Tswap(T &t1,T &t2,T &t3){
	cout<<"22223333"<<endl;
}

//这里的函数定义相当于是对上面函数的实例化,所以叫实例化函数模板
template void Tswap<people>(people &p1,people &p2,people &p3);

类模板:
template<class TTT>
class TestPeople{
public:
	TestPeople(TTT &p1,TTT &p2){
		cout<<"construct"<<endl;
	}
};
int main(){
	people p1 = {"mick",21};
	people p2 = {"jick",31};
	people p3 = {"tom",35};
	TestPeople<people> p(p1,2);
	getchar();
	return 0;
}

复制构造函数:
系统会默认为类创建一个复制构造函数,把成员变量复制到新的对象中:
template<class TTT>
class TestPeople{
public:
	TestPeople(TTT &p1,TTT &p2){
		cout<<"construct"<<endl;
		t1 = &p1;
		t2 = &p2;
	}
	TestPeople(TestPeople &tp){
		cout<<"复制构造函数"<<endl;
	}
	TTT *t1;
	TTT *t2;
};
int main(){
	people p1 = {"mick",21};
	people p2 = {"jick",31};
	people p3 = {"tom",35};
	//创建一个对象
	TestPeople<people> *p = new TestPeople<people>(p1,p2);
	//调用复制构造函数,好像只能通过指针来调用复制构造函数
	TestPeople<people> t = (*p);
	p1.name = "test";
	cout<<p->t1->name<<endl;
	cout<<t.t1->name<<endl;
	getchar();
	return 0;
}


按值传递会自动调用复制构造函数复制一个对象返回:
class TestOperator{
private:
	int n;
public:
	TestOperator(int x):n(x){
		cout<<"构造函数"<<endl;
	}
	int get(){
		return n;
	}
	//重载了复制构造函数
	TestOperator(TestOperator &t){
		cout<<"copy con"<<endl;
	}		
	//这里按值返回了一个TestOperator的对象,会调用上面的复制构造函数
	TestOperator operator++(){
		++n;
		cout<<"++运算符"<<endl;
		return *this;
	}
};


运算符重载:
class TestOperator{
private:
	int n;
public:
	TestOperator(int x):n(x){
		cout<<"构造函数"<<endl;
	}
	int get(){
		return n;
	}
	TestOperator(TestOperator &t){
		cout<<"copy con"<<endl;
	}
	//重载了++运算符
	TestOperator operator++(){
		++n;
		cout<<"++运算符"<<endl;
		return *this;
	}
	//重载=运算符
	void operator=(TestOperator &a){
		this->n = a.get();
	}
	//将对象转换为基本类型
	operator int(){
		return n;
	}
};
int main(){
	TestOperator t(2);
	TestOperator tt(3);
	//调用=重载运算符
	tt = t;
	cout<<tt.get()<<endl;
	//调用operator int()
	int i = tt;
	cout<<i<<endl;
	//这里的调用顺序:调用构造函数,将i传递进去,创建了一个临时对象,然后调用=运算符,将临时对象赋值给ttt
	TestOperator ttt = i;
	getchar();
	return 0;	
}


预处理指令中可以使用#运算符,#运算符把其后的任何字符用""引起来
#define show(x) cout<<#x
show(hello world)将输出hello world

##将多个字符串连接成一个字符串
#define show(x) cout<<"show "##x##" student"
show(one) 输出show one student

#if defined 判断某个宏是否已被定义,#是其缩写形式#ifdef,#if !defined的缩写形式是#ifndef

#pragma:
#pragma message("")编译时输出信息
#pragma once 编译时只编译一次
分享到:
评论

相关推荐

    C++知识点全概括 使用Xmind

    C++知识点全概括!

    C++知识点 XMind思维导图

    C++知识点 XMind思维导图

    c++知识体系总结思维导图

    在深入探讨C++知识体系之前,我们先来理解一下什么是思维导图。思维导图是一种有效的学习工具,它帮助组织和可视化信息,通过图形方式展示主题的各个分支和子主题,使学习过程更为直观。 现在,让我们逐步展开C++...

    C&&C++知识体系结构图

    "c语言知识体系.png"和"c++知识体系 (2).png"可能是这样的可视化表示,它们将有助于你直观地掌握这两门语言的关键概念和组成部分。 通过深入学习C和C++,开发者可以编写出高效、灵活的代码,并能适应各种复杂项目的...

    c++知识框图及知识总结

    这个xmind文档适用于初学c++的小白,可以帮助了解一下c++的知识体系,当然这是小编自己制作的,可能不是很全面,想要学习更深入的知识,还需要我们慢慢去... 希望读者看到这个c++知识框图,可以更好的去了解c++,去学习c++!!!

    C++知识图谱(不包含C++11之后的内容)

    这是用XMind写成的C++知识图谱,有C++的详细知识点

    c++知识体系框架图

    c++知识体系框架图

    c++ 知识点整理(XMind)

    c++ 知识点整理(XMind)

    C++知识体系图解(超详细)

    本文档用于解析C++知识图解,打开时请用XMind软件打开!!!

    C++知识点,学习c++

    一、#include “filename.h”和#include 的区别 #include “filename.h”是指编译器将从当前工作目录上开始查找此文件 #include 是指编译器将从标准库目录中开始查找此文件 二、头文件的作用 ...

    C++知识结构

    C++知识结构

    Visual_C++知识库.rar_visual c++_知识库

    《Visual C++知识库》是针对编程语言Visual C++的深度学习资源集合,包含了丰富的理论与实践内容。Visual C++是Microsoft公司推出的一种基于Windows操作系统的集成开发环境,它不仅支持C++语言,还提供了MFC...

    少儿编程C++初级基础知识点.zip

    【少儿编程C++初级基础知识点】是针对初学者设计的一系列C++编程教学内容,旨在帮助孩子们建立起坚实的编程基础。...C++知识点习题的实践是提高编程技能的关键,让孩子不断挑战和解决实际问题,才能真正掌握编程语言。

    卢瑟们的作业展示,答案讲解,以及一些C++知识.zip

    卢瑟们的作业展示,答案讲解,以及一些C++知识.zip卢瑟们的作业展示,答案讲解,以及一些C++知识.zip卢瑟们的作业展示,答案讲解,以及一些C++知识.zip卢瑟们的作业展示,答案讲解,以及一些C++知识.zip卢瑟们的作业...

    c++知识点思维导图

    "C++知识点思维导图"为初学者提供了一个全面且系统的C++学习框架,旨在帮助他们快速理解和掌握这门语言的核心概念。 一、基础语法 C++的基础语法包括变量定义、数据类型(如int, float, double, char等)、运算符...

    C++知识要点汇总

    归纳和总结了C++所有的知识要点,理解掌握后即可动手编程或应试

    Visual C++ 知识库

    《Visual C++ 知识库》是一个专门为初学者和开发者提供的资源,涵盖了关于Microsoft的Visual C++编程环境的广泛信息。作为一个高效的开发工具,Visual C++不仅支持C++语言,还提供了集成的开发环境(IDE),包括源...

    C++知识图谱(xmind原生文件+全1408主题+图文代码内嵌)

    内容概要:本C++知识图谱为原生xmind文件,可二创,包含13个主题:C++基础、类和对象、内存管理、模板、IO流、继承、多态、C++11、异常、智能指针、特殊类设计、C++类型转换、STL、数据结构与算法。 适合人群:C++...

    超详细的C++知识点总结思维导图

    周末闲来无事,把C++的知识点重新梳理了一遍,以思维导图的形式呈现给大家,适合初学者,能很好的入门C++,能全面概括C++的重要知识点,可做收藏,学习巩固C++的重要知识点使用。

    C++知识点,特别是重难点、易混淆知识点大全

    内容概要:包括C++每一章节知识点,特别包括重难点、易混淆知识点和易出错知识点(都有用颜色标注出来) 参考书籍:内容依据《c++程序设计第三版....资料为文字、图片并存的形式,生动形象的展现了C++知识点

Global site tag (gtag.js) - Google Analytics