IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++基本知识点集锦(2022秋招) -> 正文阅读

[C++知识库]C++基本知识点集锦(2022秋招)

(1)构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。(构造函数的命名必须和类名完全相同)

(2)C++的空类,编译器会加入哪些默认的成员函数:
·默认构造函数和拷贝构造函数
·析构函数
·赋值函数(赋值运算符)
·取值函数
**即使程序没定义任何成员,编译器也会插入以上的函数!

注意:构造函数可以被重载,可以多个,可以带参数;
析构函数只有一个,不能被重载,不带参数

(3)拷贝构造函数是C++独有的,它是一种特殊的构造函数,用基于同一类的一个对象构造和初始化另一个对象。
当没有重载拷贝构造函数时,通过默认拷贝构造函数来创建一个对象
A a;
A b(a);
A b=a; 都是拷贝构造函数来创建对象b
强调:这里b对象是不存在的,是用a 对象来构造和初始化b的!!

(4)拷贝构造函数重载声明如下:
A (const A&other)

class A  
{  
  int m_i  
  A(const A& other):m_i(other.m_i)  
{  
  Cout<<”拷贝构造函数”<<endl;  
}  
}

(5)当一个类的对象向该类的另一个对象赋值时,就会用到该类的赋值函数。
当没有重载赋值函数(赋值运算符)时,通过默认赋值函数来进行赋值操作
A a;
A b;
b=a;
强调:这里a,b对象是已经存在的,是用a 对象来赋值给b的!!

赋值运算的重载声明如下:
A& operator = (const A& other)

class  A;  
A a;  
A b=a;   //调用拷贝构造函数(b不存在)  
A c(a) ;   //调用拷贝构造函数  
  
/****/  
  
class  A;  
A a;  
A b;     
b = a ;   //调用赋值函数(b存在)

a.对象不存在,且没用别的对象来初始化,就是调用了构造函数;
b.对象不存在,且用别的对象来初始化,就是拷贝构造函数(上面说了三种用它的情况!)
c.对象存在,用别的对象来给它赋值,就是赋值函数。

例子:

#include <iostream>
using namespace std;
class Model
{
    private:
        int val;
    public:
        Model(int n = 0):val(n){}  //构造函数
        Model(const Model &obj)  //拷贝构造函数
        { val =  2*obj.val; }
        Model &operator=(const Model &obj)  //赋值函数
        { val =  4*obj.val; return *this; }
        void print()
        {
            cout << val << endl;
        }
};

int main( )
{
    Model obj1(10), obj2 = obj1, obj3;  //obj2 = obj1;为拷贝构造函数obj2不存在
    obj3 = obj1;  //obj3 = obj1;为赋值函数,obj3存在
    obj2.print();
    obj3.print();
    return 0;
}

输出为:20 40

(6)友元函数

#include<iostream>
using namespace std;
class P
{
public:
        P( int x, int y ) 
  { 
   X = x; 
   Y = y; 
  }
        void Print() 
  { 
   cout << "P(" << X << ", " << Y << ")" << endl;
  }
        friend P operator+( P & pt, int n );
private:
        int X, Y;
};
//友元函数,需要在构造函数里面进行声明,填空处和上面定义需要一致;
_____P____ operator+( P & pt, int n )
{
   P T= pt;
   T.X += n;
   T.Y += n;
   return T;
}
int main()
{
   P pt( 10, 10 );
   pt = pt + 5;
   pt.Print();
   return 0;
}

答案:P

(7)以下叙述中正确的是( D )。
A.""(连续两个双引号)是空的字符串,’’(连续两个单引号)是空字符NULL
B."\“与’\’ 都是字符串常量
C.”\n"和’\n’都是回车字符
D.’’\x41’和’\101’是等效的
解释:
A ‘’(两个连续的单引号)是空字符,不占用内存空间,不是字符常量,常量是有地址的。
B “\“是’\'不是,字符串是双引号。
C 字符是单引号 '\n’是回车字符
D.”\x41"为十六进制:4 * 16 + 1* 0 = 65;’\101’为八进制:1 8^2 + 0 8+1*1 = 65;

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 14:54:29  更:2021-08-20 14:55:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 11:51:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码