![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 58
葡萄玛奇朵朵
学习
展开
-
C和C++区别
1.c是c++的子集,c++是c的加强。 .c .cpp类型检查更为严格2.面向对象(封装 继承 多态)3.增加泛型变成机制(template typedef)4.增加异常处理(try{} catch(){} finally{})5.增加运算符和函数重载(重名函数)6.增加标准模板库(STL)学数据结构是知模板所以然7.增加引用(别名)改变实参必须传指针或引用8.变量声明更加灵活(可以在任何位置,不一定在开头)9.const变量(常变量 有类型)和inline(函数 可调原创 2021-07-07 16:19:52 · 136 阅读 · 0 评论 -
面向对象之封装
class 类名{1.构造函数(构造函数生成对象)类型:(a.默认构造无参 b.普通构造自己定义的有参 c.拷贝构造 参为另一个对象 引用)特点:(无返回值)(函数名与类名相同)2.析构函数~(无参)(在销毁对象时调用的函数 释放内存资源)3. public private(只能在类的内部函数调用 mian不能调用)4.数据成员5.成员函数(工具函数 get读 set写 获取private类型的数据 因为在类外不能用private数据 所以在类外调用工具函数用p原创 2021-07-07 16:54:36 · 60 阅读 · 0 评论 -
面向对象之继承
内容在c++里,一个类(派生类)可以从另一个类(继承类)中继承。继承是一种复用代码的机制。每个派生类都继承其基类数据成员和成员函数,派生类只需要编写与基类行为不同或者扩展方面(继承,改写–用虚函数,新加行为方法);一个派生类可以从一个基类派生(单继承),也可以从多个基类派生(多继承)。派生类的定义格式:class<派生类名>:<继承方式><基类名>{<派生类新定义成员>};其中:class是关键词<派生类名>是新定义的一个类的名原创 2021-07-07 20:41:03 · 109 阅读 · 0 评论 -
c++的构造函数的两个问题
c++的构造函数的两个问题为什么构造函数和析构函数没有返回值1. 安全性2. 二义性为什么构造函数不能使用virtual关键字修饰为什么构造函数和析构函数没有返回值1. 安全性构造函数和析构函数是只能在生成对象和对象消亡时调用,其他时间是不能调用的。一个对象是只能生一次,只能死一次。如果有返回值,就代表着有选择权(即使返回的是void)。编译器调用构造函数只是确定它发生,如果有返回值的话编译器就不得不知道针对返回值该怎么去做,程序员也可以随意调用构造函数了(变成普通函数),这样会威胁到程序的安全。原创 2021-07-08 14:13:24 · 112 阅读 · 0 评论 -
拷贝构造函数的两个问题
拷贝构造函数的两个问题类中有指针成员,需要单独设计一个拷贝构造函数(不能用默认的,浅拷贝)设计拷贝构造函数的时候,需要传引用类中有指针成员,需要单独设计一个拷贝构造函数(不能用默认的,浅拷贝)class A{public:A(int i){p=new int(i) ; }private:int *p;};这样是不够的,需要单独设计拷贝构造函数。设计拷贝构造函数的时候,需要传引用A(const A &a){…}若传值把实参传给形参,本身这个过程就会调用拷贝构造函数。又把形参拷原创 2021-07-08 14:34:06 · 138 阅读 · 0 评论 -
面向对象之多态+new
面向对象之多态多态性实例面积Shape基类派生类圆面积派生类矩形面积主函数结果展示注意多态性从相同的基类中继承而来的不同的派生类,由于对某些函数的实现做了部分修改,使得从这些基类派生出来的类所定义的对象对于同一消息会进行不同的操作。多态性是通过虚函数实现的。通过基类指针(或者引用)来请求使用虚函数时,c++会在与对象关联的派生类中选择正确的改写过的函数。实例面积Shape基类class Shape {public: Shape() { } virtual ~Shape() { }原创 2021-07-08 17:19:57 · 351 阅读 · 0 评论 -
重载,名字修饰,重写
重载和名字修饰重载(overload)定义重载规则名字修饰(name mangling)一个实例代码结果c++中若要引用c语言代码,必须加上extern "c"说明。struct 和class的区别重写(override)重载(overload)定义允许存在多个同名函数,而这些函数的参数不同。重载规则被重载的方法 必须改变参数列表;被重载的方法可以改变返回值类型,但是不能通过返回值类型来区分重载的不同函数。原因:(1)int func(int x,int y);(2)float func(原创 2021-07-09 15:29:41 · 159 阅读 · 0 评论 -
面向对象之封装、继承、多态、重载总结
面向对象之封装、继承、多态、重载总结封装继承多态重载封装类数据成员成员函数(构造,析构,工具,行为)继承派生类继承共享基类派生类改写—重写(override)(析构和改写的函数virtual)派生类添加新函数多态多个派生类继承于同一个基类,基类中定义的某个行为在派生类中表现的不同的现象。表现:基类指针指向不同派生类对象,用此基类指针调用基类中的虚函数时,就会随着基类指针指向的不同的派生类对象而表现出不同的行为。重载同一类中的同名函数。函数名相同,返回类型不做要求,参数修饰必原创 2021-07-09 15:46:35 · 286 阅读 · 0 评论 -
小作业---实现String类
实现String类题目代码结果注意题目代码#include<iostream>using namespace std;class String {private: char* m_data;public: String() { m_data = new char[1]; *m_data = '\0'; cout << "String() called " <<m_data<< endl; } String(const ch原创 2021-07-09 16:59:24 · 84 阅读 · 0 评论